公共网关接口(Common Gateway Interface,CGI)是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。
CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。
通过CGI 协议,再结合已搭建好的web应用程序,就可以让web server也能"处理"动态请求(或者说,当用户访问某个特定资源时,可以触发执行某个web应用程序来实现特定功能)。
扩展资料
CGI规范定义了Web服务器如何向扩展应用程序发送消息,在收到扩展应用程序的信息后又如何进行处理等内容。
对于许多静态的HTML网页无法实现的功能,通过 CGI可以实现,比如表单的处理、对数据库的访问、搜索引擎、基于Web的数据库访问等等。
当CGI进程接收到web server的请求后,调用search程序并执行,同时还会传递参数给search程序。search执行结束后,CGI进程/线程将处理结果返回给web server,web server再返回给浏览器。
参考资料来源:百度百科-CGI
配置 CGI 应用程序 (IIS 6.0)IIS 6.0 支持通用网关接口 (CGI) 应用程序。本主题提供了有关在 Web 服务器上安装和配置 CGI 应用程序以及设置 CGI 脚本超时值的管理信息。
要点:
为了最大限度地减少服务器的攻击面,默认情况下,Windows Server 2003 上不安装 IIS 6.0。首次安装 IIS 6.0 时,IIS 6.0 将被锁定 -- 这表明只启用处理静态网页的请求,并且只安装万维网发布服务(WWW 服务)。IIS 上的所有功能都将关闭,包括 ASP、ASP.NET、CGI 脚本、Microsoft 的 FrontPage® 2002 Server Extensions 以及 WebDAV 发布功能。如果未启用这些功能,那么 IIS 将返回 404 错误。您可以通过 IIS 管理器中的 启用 Web 服务扩展节点启用这些功能。有关如何解决 404 错误及其他问题的详细信息,请参阅 IIS 6.0 中的疑难解答。
CGI 程序在 Web 服务器接收到包含 CGI 程序名和程序所需参数的 URL 时执行。如果将 CGI 程序编译为可执行 (.exe) 文件,则必须提供包含程序执行权限的目录,以便用户可以运行程序。如果 CGI 程序以脚本形式(例如 Perl 脚本)编写,则既可为目录提供执行权限,也可为其提供脚本权限。要使用脚本权限,必须将脚本解释程序标记为脚本引擎。
注意:
默认情况下,IIS_WPG 组不具备启动 CGI 进程的权利。如果创建了新帐户并将其添加到 IIS_WPG 组以运行工作进程标识,还必须授予此帐户两种启动 CGI 进程的用户权限。这些用户权利是“调整进程的内存配额”和“替换进程级令牌”。有关如何修改用户权利的详细信息,请参阅 Windows Server 2003 帮助和支持中心中的“编辑本地安全设置”或“编辑组策略对象上的安全设置”。
如果要开发新 CGI 应用程序,Microsoft 提供了几种选择。要加快执行速度,请考虑开发 Internet 服务器 API (ISAPI) 扩展。为便于开发,请考虑开发 ASP.NET 应用程序。
本节包含下列信息:
• 在 IIS 6.0 中安装 CGI 应用程序:介绍如何在 Web 服务器上安装 CGI 应用程序。
• 配置并发 CGI 请求的最大数:介绍如何配置最大的并发 CGI 请求数。
• 配置 CGI 应用程序超时:介绍如何配置 CGI 应用程序的超时值。
在 IIS 6.0 中安装 CGI 应用程序 (IIS 6.0)
要点:
只有本地计算机上 Administrators 组的成员才能执行以下过程。作为安全性最佳操作,请使用不属于 Administrators 组的帐户登录计算机,然后使用 runas 命令以管理员身份运行 IIS 管理器。在命令提示符下,键入 runas /User:Administrative_AccountName"mmc %systemroot%/system32/inetsrv/iis.msc"。
过程
安装和配置 CGI 应用程序
1.
为 CGI 程序创建目录。为了增加安全,请将 CGI 程序与内容文件分开。没有必要将目录命名为 Cgi-bin,虽然您可以这么做。详细信息,请参阅使用虚拟目录。
2.
如果 CGI 程序是脚本,那么请获取并安装相应的脚本解释程序。例如,要运行 Perl 脚本,要有 Perl 解释程序。Windows 操作系统不提供 Perl、SED 或 AWK 的版本。因此,您必须从第三方开发商处获取这些解释程序。
3.
如果 CGI 程序为 .exe 文件,应为目录提供执行权限。如果 CGI 程序是脚本,则既可为目录提供执行权限,也可为其提供脚本权限。详细信息,请参阅Access Control in IIS 6.0。
如果选择为目录提供脚本权限,则必须在该目录的属性中将脚本解释程序标记为脚本引擎。只有标记为脚本引擎的解释程序才能够在该目录中执行。可执行文件(.dll 和 .exe 文件)无法直接执行,即浏览器请求无法通过在 URL 中包含程序名来启动 Web 服务器中的可执行文件。通过启用“仅脚本”权限并选中“脚本引擎”复选框,可以将内容文件(如 .htm 或 .gif 文件)作为 CGI 脚本安全地放在同一个目录中。内容文件可以在浏览器中显示,同时可以执行脚本,但是不能运行未授权的程序且不在浏览器中显示脚本命令。
4.
对于 CGI 脚本,应在脚本的文件扩展名和脚本解释程序之间创建应用程序映射。
IIS 可将文件扩展名映射到解释程序。例如,如果使用 Perl 脚本(该脚本存储在以 .pl 为扩展名的文件中),请将 .pl 扩展名映射到运行 Perl 脚本的程序。请将 .bat 和 .cmd 文件映射到命令解释程序 (Cmd.exe)。详细信息,请参阅在 IIS 6.0 中设置应用程序映射。
5.
设置 NTFS 权限。如果使用 NTFS 访问权限,请验证所有需要运行程序的用户都具有对该目录的执行权限。如果网站接受匿名用户,请确保匿名用户(IUSR_computername 帐户)具有执行权限。
IIS 支持大多数的标准服务器环境变量。
为更加安全起见,Web 服务器不将命令解释程序的特殊字符传递给映射的 CGI 应用程序。在默认情况下,以下字符不能包含在调用 CGI 应用程序的 URL 中:
| ( , % <>配置并发 CGI 请求的最大数 (IIS 6.0)为了防止性能下降并减少 Web 服务器上可能存在的安全隐患,可以配置同时运行的并发 CGI 请求的最大数。 要点:只有本地计算机上的 Administrators 组成员,才能执行以下过程。作为安全性的最佳操作,请使用不属于 Administrators 组的帐户登录计算机,然后使用 runas 命令以管理员身份运行 IIS 管理器。在命令提示符下,键入 runas /User:Administrative_AccountName"mmc %systemroot%/system32/inetsrv/iis.msc"。 要点:注册表编辑器使用不当可能导致需要重新安装操作系统的严重问题。因为注册表编辑器会跳过标准安全保护(禁止您输入存在冲突或者有可能降低性能或损坏系统的设置),所以在更改注册表时一定要格外小心。Microsoft 无法保证解决由于错误使用注册表编辑器而引起的问题。有关如何编辑注册表的信息,请参阅注册表编辑器帮助中的“更改项和值”主题。过程配置并发 CGI 请求的最大数1. 从“开始”菜单,单击“运行”。 2. 在“打开”框中,键入 Regedit.exe,然后单击“确定”。 3. 定位至注册表中的以下位置:HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/W3SVC/Parameters。 4. 从“编辑”菜单中,指向“添加”,单击“DWORD 值”,然后添加以下注册表值:名称:MaxConcurrentCgisExecuting类型:REG_DWORD数据:如果该注册表项不存在,则 IIS 使用默认值 256。根据需要,可以将该值设置在 0 和 4294967295(无穷大)之间。使用如果使用的值较小,则表示在 Web 服务器上并发运行的 CGI 请求数较少,但是,使用较大的值可能会降低性能。 5. 退出注册表编辑器。 配置 CGI 应用程序超时 (IIS 6.0)设置 CGI 应用程序的超时值时,需要手动设置 CGITimeout 配置数据库属性。 有关该配置数据库属性的信息,请参阅 CGITimeout 配置数据库属性。可以在全局级别、单个站点级别和站点元素级别上设置 CGITimout 属性。为此,可以灵活地对整个 CGITimeout 级别进行配置,然后为各个站点和站点元素自定义设置。如果要在运行 IIS 时编辑该设置,请确保启用“配置数据库运行时编辑”设置。详细信息,请参阅在 IIS 6.0 中启用运行时编辑功能。
------------------------------------------------------------
微软相关文档
Configuring CGI Applications (IIS 6.0)
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/bc0c4729-e892-4871-b8f3-fcbf489f2f09.mspx?mfr=true
什么是CGI1. 定义:
CGI(Common Gateway Interface)是HTTP服务器与你的或其它机器
上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
2. 功能:
绝大多数的CGI程序被用来解释处理杰自表单的输入信息,并在服
务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使
网页具有交互功能。
3. 运行环境:
CGI程序在UNIX操作系统上CERN或NCSA格式的服务器上运行。
在其它操作系统(如:windows NT及windows95等)的服务器上
也广泛地使用CGI程序,同时它也适用于各种类型机器。
4. CGI处理步骤:
⑴通过Internet把用户请求送到服务器。
⑵服务器接收用户请求并交给CGI程序处理。
⑶CGI程序把处理结果传送给服务器。
⑷服务器把结果送回到用户。
5. CGI服务器配置:
CGI程序不是放在服务器上就能顺利运行,如果要想使其在服务器
上顺利的运行并准确的处理用户的请求,则须对所使用的服务器进
行必要的设置。
配置:根据所使用的服务器类型以及它的设置把CGI程序放在某一
特定的目录中或使其带有特定的扩展名。
⑴CREN格式服务器的配置:
编辑CREN格式服务器的配置文件通常为/etc/httpd.conf/
在文件中加入:Exec cgi-bin/*/home/www/cgi-bin/*.exec
命令中出现的第一个参数cgi-bin/*指出了在URL中出现的目录
名字,并表示它出
现在系统主机后的第一个目录中,如:
http://edgar.stern.nyn.edu/cgi-bin/
命令中的第二个参数表示CGI程序目录放在系统中的真实路径。
CGI目录除了可以点网络文件放在同一目录中,也可以放在系统
的其它目录中,但必须保证在你的系统中也具有同样的目录。在
对服务器完成设置后,须重新启动服务器(除非HTTP服务器是用
inetd启动的)。
⑵NCSA格式服务器的配置
在NCSA格式服务器上有两种方法进行设置:
①在srm.conf文件(通常在conf目录下)中加入:
Script Alias/cgi-bin/cgi-bin/
Script Alias命令指出某一目录下的文件是可执行程序,且这
个命令是用来执行
这些程序的;此命令的两个参数与CERN格式服务器中的Exec命
令的参数的含意一样。
②在srm.conf文件加入:
Add type application/x-httpd-cgi.cgi
此命令表示在服务器上增加了一种新的文件类型,其后第一个
参数为CGI程序的MIME类型,第二个参数是文件的扩展名,表
示以这一扩展名为扩展名的文件是CGI程序。
在用上述方法之一设置服务器后,都得重新启动服务器(除非
HTTP服务器是用inetd启动的)。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)