Apache服務器如何使CGI執行?

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> ????Options?+ExecCGI </directory>

上述指令告訴Apache允許執行CGI文件。還需要告訴服務器哪些文件是CGI文件。以下AddHandler指令告訴服務器將所有帶有cgi或pl擴展名的文件視為CGI程序:

AddHandler?cgi-script?.cgi?.pl

方式4:用戶目錄

要允許在用戶目錄中以.cgi結尾的任何文件執行CGI程序,可以使用以下配置。

<directory> ????Options?+ExecCGI ????AddHandler?cgi-script?.cgi </directory>

如果您希望指定用戶目錄的cgi-bin子目錄,其中所有內容都將被視為CGI程序,則可以使用以下命令。

<directory> ????Options?ExecCGI ????SetHandler?cgi-script </directory>

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享