首页 运维 Apache Apache服务器如何使CGI执行?

Apache服务器如何使CGI执行?

Nov 30, 2019 am 11:30 AM
apache

CGI(公共网关接口)定义了Web服务器与外部内容生成程序交互的方式,这些程序通常被称为CGI程序或CGI脚本。这是一种使用您最熟悉的编程语言将动态内容放在网站上的简单方法。

Apache服务器如何使CGI执行?

配置Apache以允许CGI

为了使CGI程序正常工作,需要配置Apache以允许CGI执行。有几种方法可以做到这一点。

方式1:ScriptAlias指令              ( 推荐学习:Apache服务器 )

ScriptAlias指令告诉Apache,为CGI程序留出了一个特定的目录。Apache将假定此目录中的每个文件都是CGI程序,并在客户端请求该特定资源时尝试执行该程序。

ScriptAlias指令如下所示:

ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
登录后复制

如果在默认位置安装了Apache,则显示的示例可在默认httpd.conf配置文件找到。

ScriptAlias指令很像Alias指令,它定义了一个映射到特定目录的URL前缀。Alias和ScriptAlias通常用于DocumentRoot目录之外的目录。

Alias和ScriptAlias之间的区别在于ScriptAlias具有额外的含义,即该URL前缀下的所有内容都将被视为CGI程序。

因此,上面的示例告诉Apache,对于以/cgi-bin/开头的资源的任何请求都应该在目录/usr/local/apache2/cgi-bin/中提供,并且应该被视为CGI程序。

例如,如果请求URL http://www.example.com/cgi-bin/test.pl,Apache将尝试执行文件/usr/local/apache2/cgi-bin/test.pl并返回输出。当然,该文件必须存在,并且是可执行的,并以特定方式返回输出,否则Apache将返回错误消息。

方式2:ScriptAlias目录之外的CGI

出于安全原因,CGI程序通常仅限于ScriptAlias的目录。通过这种方式,管理员可以严格控制允许谁使用CGI程序。但是,如果采取适当的安全预防措施,则没有理由不能从任意目录运行CGI程序。

例如,您可能希望使用UserDir指令让用户在其主目录中拥有Web内容。如果他们想拥有自己的CGI程序,但无法访问主cgi-bin目录,则需要能够在其他地方运行CGI程序。

允许在任意目录中执行CGI有两个步骤。首先,必须使用AddHandler或SetHandler指令激活cgi-script处理程序。其次,必须在Options指令中指定ExecCGI。

方式3:使用Options来允许CGI执行

可以在主服务器配置文件中明确使用Options指令来指定在特定目录中允许CGI执行:

<Directory "/usr/local/apache2/htdocs/somedir">
    Options +ExecCGI
</Directory>
登录后复制

上述指令告诉Apache允许执行CGI文件。还需要告诉服务器哪些文件是CGI文件。以下AddHandler指令告诉服务器将所有带有cgi或pl扩展名的文件视为CGI程序:

AddHandler cgi-script .cgi .pl
登录后复制

方式4:用户目录

要允许在用户目录中以.cgi结尾的任何文件执行CGI程序,可以使用以下配置。

<Directory "/home/*/public_html">
    Options +ExecCGI
    AddHandler cgi-script .cgi
</Directory>
登录后复制

如果您希望指定用户目录的cgi-bin子目录,其中所有内容都将被视为CGI程序,则可以使用以下命令。

<Directory "/home/*/public_html/cgi-bin">
    Options ExecCGI
    SetHandler cgi-script
</Directory>
登录后复制

以上是Apache服务器如何使CGI执行?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

c++属于前端还是后端 c++属于前端还是后端 Apr 22, 2024 pm 05:33 PM

c++属于前端还是后端

PHP 框架性能比较:速度与效率的终极对决 PHP 框架性能比较:速度与效率的终极对决 Apr 30, 2024 pm 12:27 PM

PHP 框架性能比较:速度与效率的终极对决

html文件怎么生成网址 html文件怎么生成网址 Apr 21, 2024 pm 12:57 PM

html文件怎么生成网址

evasive 模块保护您的网站免受应用层 DOS 攻击 evasive 模块保护您的网站免受应用层 DOS 攻击 Apr 30, 2024 pm 05:34 PM

evasive 模块保护您的网站免受应用层 DOS 攻击

golang函数并发控制与第三方库的整合与扩展 golang函数并发控制与第三方库的整合与扩展 Apr 25, 2024 am 09:27 AM

golang函数并发控制与第三方库的整合与扩展

Java 并发编程中如何进行并发测试和调试? Java 并发编程中如何进行并发测试和调试? May 09, 2024 am 09:33 AM

Java 并发编程中如何进行并发测试和调试?

eclipse如何添加服务器 eclipse如何添加服务器 May 05, 2024 pm 07:27 PM

eclipse如何添加服务器

算法在 58 画像平台建设中的应用 算法在 58 画像平台建设中的应用 May 09, 2024 am 09:01 AM

算法在 58 画像平台建设中的应用

See all articles