FastCGI 指引
這些配置參數可控制 IBM® HTTP Server 中的 FastCGI 特性。
- FastCGIAccessChecker 指引
- FastCGIAccessCheckerAuthoritatve 指引
- FastCGIAuthenticator 指引
- FastCGIAuthenticatorAuthoritative 指引
- FastCGIAuthorizer 指引
- FastCGIAuthorizerAuthoritative 指引
- FastCGIConfig 指引
- FastCGIExternalServer 指引
- FastCGIIpcDir 指引
- FastCGIServer 指引
FastCGIsuEXEC 指引
FastCGIAccessChecker 指引
FastCGIAccessChecker 指引可將 FastCGI 應用程式定義成個別目錄的存取驗證器。
指引 | 說明 |
---|---|
語法 | FastCGIAccessChecker 檔名 [-compat] |
範圍 | 目錄、位置 |
預設值 | 目錄 |
模組 | mod_fastcgi |
配置檔中的多個實例 | yes |
值 | 檔名 |
「Apache 存取」階段在使用者鑑別之前,而隨著要求一起提交的 HTTP 標頭可決定是否可存取所要求資源的決策。當存取驗證決策中有動態構成要素存在時(例如時間,或是網域帳戶的狀態),請使用 FastCGI 型的授權程式。
如果 FastCGI 應用程式檔名沒有相對應的靜態或外部伺服器定義,該應用程式就會啟動成動態 FastCGI 應用程式。如果檔名不是以斜線 (/) 開頭,應用程式就會假設檔名相對於 ServerRoot。
<Directory htdocs/protected>
FastCgiAccessChecker fcgi-bin/access-checker
</Directory>
Mod_fastcgi 會將幾乎所有通常可用的標準環境變數傳送至 CGI 和 FastCGI 要求處理程式。FastCGI access-checker 應用程式在成功的回應(狀態:200)中傳回的所有標頭,都會傳遞至子程序(或 CGI 和 FastCGI 呼叫),作為環境變數。在不成功的回應中傳回的所有標頭會傳遞至用戶端。您可以使用 -compat 選項來取得 FastCGI 規格相容行為。
Mod_fastcgi 會將環境變數 FCGI_APACHE_ROLE 設為 ACCESS_CHECKER,以指出所執行的 Apache 特定授權程式階段。
HTTP Server 不支援來自 FastCGI 授權應用程式的自訂失敗回應。請參閱 ErrorDocument 指引,以取得暫行解決方法。FastCGI 應用程式可以提供文件。
FastCGIAccessCheckerAuthoritatve 指引
FastCGIAccessCheckerAuthoritatve 指引會啟用傳遞至低階模組的存取權檢查。
指引 | 說明 |
---|---|
語法 | FastCGIAccessCheckerAuthoritative On | Off |
範圍 | 目錄、位置 |
預設值 | FastCGIAccessCheckerAuthoritative On |
模組 | mod_fastcgi |
配置檔中的多個實例 | yes |
值 | On 或 Off |
將 FastCgiAccessCheckerAuthoritative 指引明確設為 Off 時,如果 FastCGI 應用程式無法啟用存取權,就會啟用傳遞至低階模組(如配置和 modules.c 檔案所定義)的存取權檢查。
依預設,控制權不會傳遞下去,而失敗的存取權檢查會產生被禁止的回覆。在停用預設值之前,請仔細考量其可能之問題。
FastCGIAuthenticator 指引
FastCGIAuthenticator 指引可將 FastCGI 應用程式定義成個別目錄的鑑別器。
指引 | 說明 |
---|---|
語法 | FastCGIAuthenticator 檔名 [-compat] |
範圍 | 目錄 |
預設值 | 無 |
模組 | mod_fastcgi |
配置檔中的多個實例 | yes |
值 | 檔名 |
鑑別器會根據已知使用者和密碼的清單或資料庫來比對使用者名稱和密碼,以驗證要求者。如果使用者資料庫是在現有的獨立程式中維護,或是位在 Web 伺服器以外的機器上,則使用 FastCGI 型鑑別器。
如果 FastCGI 應用程式檔名沒有相對應的靜態或外部伺服器定義,該應用程式就會啟動成動態 FastCGI 應用程式。如果檔名不是以斜線 (/) 開頭,就會假設檔名相對於 ServerRoot。
在 Directory 或 Location 儲存器中使用 FastCgiAuthenticator 指引,以搭配 AuthType 和 AuthName 指引。此指引僅支援基本使用者鑑別類型。這個鑑別類型需要 require 或 FastCgiAuthorizer 指引,才能正確運作。
/Directory htdocs/protected>
AuthType Basic
AuthName ProtectedRealm
FastCgiAuthenticator fcgi-bin/authenticator
require valid-user
</Directory>
Mod_fastcgi 指引會將幾乎所有通常可用的標準環境變數傳送至 CGI 和 FastCGI 要求處理程式。FastCGI 鑑別應用程式在成功的回應(狀態:200)中傳回的所有標頭,都會傳遞至子程序(或 CGI 和 FastCGI 呼叫),作為環境變數。在不成功的回應中傳回的所有標頭會傳遞至用戶端。您可以使用 -compat 選項來取得 FastCGI 規格相容行為。
Mod_fastcgi 指引會將 FCGI_APACHE_ROLE 環境變數設為 AUTHENTICATOR,以指出所執行的 Apache 特定授權程式階段。
此指引不支援來自 FastCGI 授權應用程式的自訂失敗回應。請參閱 ErrorDocument 指引,以取得暫行解決方法。FastCGI 應用程式可以提供文件。
FastCGIAuthenticatorAuthoritative 指引
如果 FastCGIAuthenticatorAuthoritative 指引明確設為 Off 而使 FastCGI 應用程式無法鑑別使用者,則此指引就會啟用傳遞至低階模組(如配置和 modules.c 檔案所定義)的鑑別。
指引 | 說明 |
---|---|
語法 | FastCGIAuthenticatorAuthoritative On | Off |
範圍 | 目錄 |
預設值 | FastCgiAuthenticatorAuthoritative On |
模組 | mod_fastcgi |
配置檔中的多個實例 | yes |
值 | On 或 Off |
將這個指引與受到妥善保護的 AuthUserFile 指引(包含一些與管理相關的使用者)一起使用。
依預設,控制權不會傳遞下去,而不明的使用者會產生「需要授權」的回覆。在停用預設值之前,請仔細考量其可能之問題。
FastCGIAuthorizer 指引
FastCGIAuthorizer 指引可將 FastCGI 應用程式定義成個別目錄的授權程式。
指引 | 說明 |
---|---|
語法 | FastCgiAuthorizer 檔名 [-compat] |
範圍 | 目錄 |
預設值 | 無 |
模組 | mod_fastcgi |
配置檔中的多個實例 | yes |
值 | 檔名 |
授權程式會驗證已鑑別的使用者是否可以存取所要求的資源。當授權決策中有動態構成要素存在時(例如時間,或是使用者帳單的貨幣),請使用 FastCGI 型的授權程式。
如果 FastCGI 應用程式檔名沒有相對應的靜態或外部伺服器定義,該應用程式就會啟動成動態 FastCGI 應用程式。如果檔名不是以斜線 (/) 開頭,就會假設檔名相對於 ServerRoot。
在 Directory 或 Location 儲存器中使用 FastCgiAuthorizer。加入 AuthType 和 AuthName 指引。此指引需要 FastCgiAuthenticator、AuthUserFile、AuthDBUserFile 或 AuthDBMUserFile 之類的鑑別指引,才能正確運作。
<Directory htdocs/protected>
AuthType Basic
AuthName ProtectedRealm
AuthDBMUserFile conf/authentication-database
FastCgiAuthorizer fcgi-bin/authorizer
</Directory>
Mod_fastcgi 指引會將幾乎所有通常可用的標準環境變數傳送至 CGI 和 FastCGI 要求處理程式。FastCGI 鑑別應用程式在成功的回應(狀態:200)中傳回的所有標頭,都會傳遞至子程序(或 CGI 和 FastCGI 呼叫),作為環境變數。在不成功的回應中傳回的所有標頭會傳遞至用戶端。您可以使用 -compat 選項來取得 FastCGI 規格相容行為。
Mod_fastcgi 指引會將環境變數 FCGI_APACHE_ROLE 設為 AUTHORIZER,以指出所執行的 Apache 特定授權程式階段。
此指引不支援來自 FastCGI 授權應用程式的自訂失敗回應。請參閱 ErrorDocument 指引,以取得暫行解決方法。FastCGI 應用程式可以提供文件。
FastCGIAuthorizerAuthoritative 指引
如果 FastCGIAuthorizerAuthoritative 指引明確設為 Off 而使 FastCGI 應用程式無法鑑別使用者,則此指引就會啟用傳遞至低階模組(如配置和 modules.c 檔案所定義)的鑑別。
指引 | 說明 |
---|---|
語法 | FastCgiAuthorizerAuthoritative 檔名 On | Off |
範圍 | 目錄 |
預設值 | FastCgiAuthorizerAuthoritative 檔名 On |
模組 | mod_fastcgi |
配置檔中的多個實例 | yes |
值 | On 或 Off |
將這個指引與受到妥善保護的 AuthUserFile(包含一些與管理相關的使用者)一起使用。
依預設,控制權不會傳遞下去,而不明的使用者會產生「需要授權」的回覆。在停用預設值之前,請仔細考量其可能之問題。
FastCGIConfig 指引
FastCGIConfig 指引可為所有動態 FastCGI 應用程式定義預設參數。
指引 | 說明 |
---|---|
語法 | FastCgiConfig 選項 選項... FastCgiConfig 指引不會影響靜態或外部應用程式。 |
範圍 | 目錄 |
預設值 | 無 |
模組 | mod_fastcgi |
配置檔中的多個實例 | yes |
值 | 動態應用程式會依需求啟動。如果要容納大量需求,其他應用程式實例就會啟動。隨著需求減輕,應用程式實例的數目就會降低。許多選項都可控管此程序。 |
- appConnTimeout n(0 秒)。等待連線至 FastCGI 應用程式完成的秒數,或是 0,代表使用封鎖 connect()。如果超過逾時值,就會產生 SERVER_ERROR。若為非零值,此時間量會用在 select() 中,以寫入至非封鎖 connect() 傳回的檔案描述子。非封鎖 connect() 在許多平台上都會發生問題。另請參閱 -idle-timeout;此選項會產生類似的結果,但可攜性較強。
- idle-timeout n(30 秒)。 允許 FastCGI 應用程式為非作用中的秒數,超過此秒數後,要求即中斷,並且會在錯誤記載層次記載此事件。唯有當與 FastCGI 應用程式的連線擱置時,才會套用非作用中計時器。 如果應用程式未於此期間內回應佇列的要求,該要求即中斷。如果與應用程式的通訊完成,但與用戶端的通訊未完成(緩衝的回應),則不會套用此逾時。
- autoUpdate none。此選項會使 mod_fastcgi 模組先檢查應用程式在磁碟上的存留時間,然後才會處理各項要求。若有最新的應用程式,此功能會通知程序管理程式,並停止所有執行中的應用程式實例。請將這種類型的功能建置在應用程式中。將此選項與 -restart 搭配使用時,可能會發生問題。
- gainValue n (0.5)。0 到 1 之間的浮點數值,在目前執行中之動態 FastCGI 應用程式的指數衰減連線時間負載係數運算中,用來作為指數。舊值是按 (1 - gainValue) 的比例計算,所以使舊值愈小,相較於現行值(按 gainValue 的比例計算)的加權就愈重。
- initial-env name[=value] none。當應用程式實例大量產生時,傳入起始環境中的名稱/值配對。如果要從 Apache 環境傳遞變數,請勿提供 "="(如果變數不是實際在該環境中,則定義中不包含值)。如果要定義不包含值的變數,請提供 "=",而不要包含任何值。此選項可重複。
- init-start-delay n(1 秒)。此應用程式的實例大量產生之間的最短秒數。此延遲會減少伺服器起始設定時,對系統的需求。
- killInterval n(300 秒)。killInterval 可決定將動態應用程式實例結束 (killing) 原則實作在程序管理程式中的頻率。數值愈低,實作原則的頻率愈高,數值愈高,實作原則的頻率愈低。
- listen-queue-depth n (100)。此應用程式的所有實例共用的 listen() 佇列深度(又稱為待辦事項)。較深的接聽佇列可讓伺服器處理暫時性的負載波動,而不會拒絕要求;這不會增加傳輸量。新增其他應用程式實例可增加傳輸量和效能,視應用程式和主機而定。
- maxClassProcesses n (10)。允許針對任一 FastCGI 應用程式執行的動態 FastCGI 應用程式實例數目上限。
- maxProcesses n (50)。允許在任何時候執行的動態 FastCGI 應用程式實例數目上限。
- minProcesses n (5)。程序管理程式允許在任何時候執行,不會因為缺少需求而結束 (kill) 的動態 FastCGI 應用程式實例數目下限。
- multiThreshhold n (50)。0 到 100 之間的整數,用來決定是否要終止 FastCGI 應用程式的任何實例。如果應用程式目前有多個實例正在執行中,此屬性可幫助決定是否要終止其中一個實例。如果只剩下一個實例,則會改用 singleThreshhold。
- pass-header header none。傳入要求環境之「HTTP 要求標頭」的名稱。此選項可讓 CGI 環境能夠使用標頭內容。
- priority n (0)。使用 setpriority() 指派給應用程式實例的程序優先順序。
- processSlack n(5 秒)。如果所有目前執行中的動態 FastCGI 應用程式總和,超過 maxProcesses - processSlack,程序管理程式就會呼叫結束 (killing) 原則。此動作會在達到 maxProcesses 值之前,先結束 (kill) 一些最不常使用的應用程式實例,因此可在負載較高時提升效能。
- restart none。此選項會使程序管理程式在失敗時,重新啟動動態應用程式,類似靜態應用程式。
- Restart-delay n(5 秒)。此應用程式的失敗實例重新大量產生之間的最短秒數。此延遲可防止損壞的應用程式耗用太多系統資源。
- singleThreshhold n (0)。0 到 100 之間的整數,用來決定 FastCGI 應用程式的最後一個實例是否可以終止。如果程序管理程式為應用程式計算的負載係數低於指定的臨界值,最後一個實例就會終止。請指定較接近 1 的值,讓您的執行檔可以在閒置模式下執行很長的時間。如果需要考量到記憶體或 CPU 時間,愈接近 100 的值愈適合。0 值可防止應用程式的最後一個實例終止,這是預設值。建議不要變更此預設值,尤其是當您設定 -appConnTimeout 選項時。
- startDelay n(3 秒)。Web 伺服器嘗試連接至動態 FastCGI 應用程式時,所等待的秒數。如果超過此間隔時間,就會通知程序管理程式,希望應用程式的其他實例可以啟動。將 startDelay 值設為小於 appConnTimeout 值才有效。
- updateInterval n(300 秒)。updateInterval 可決定多久執行一次統計分析,以判定動態 FastCGI 應用程式的命運。
FastCGIExternalServer 指引
FastCGIExternalServer 會將檔名定義為外部 FastCGI 應用程式。
其運作方式與 Fastcgiserver 指引相同,不同之處在於 CGI 應用程式是在 Web 伺服器外部的另一個程序中執行。
指引 | 說明 |
---|---|
語法 | FastCgiExternalServer 檔名 -host hostnameport [-appConnTimeout n] FastCgiExternalServer 檔名 -socket 檔名 [-appConnTimeout n] |
範圍 | 伺服器配置 |
預設值 | 無 |
模組 | mod_fastcgi |
配置檔中的多個實例 | yes |
值 |
|
FastCGIIpcDir 指引
FastCGIIpcDir 指引會指定目錄,以作為用來儲存 UNIX Socket 檔案的位置,這些檔案會用來在應用程式與 Web 伺服器之間進行通訊。
指引 | 說明 |
---|---|
語法 |
|
範圍 | 伺服器配置 |
預設值 | 無 |
模組 | mod_fastcgi |
配置檔中的多個實例 | yes |
值 | 目錄或名稱 |
FastCgiIpcDir 指引會指定目錄,以作為儲存及尋找(就外部 FastCGI 應用程式而言)UNIX Socket 檔案的位置,這些檔案會用來在應用程式與 Web 伺服器之間進行通訊。如果目錄不是以斜線 (/) 開頭,就會假設其相對於 ServerRoot。如果目錄不存在,此功能就會嘗試以適當的許可權來建立指引。請指定本端檔案系統上的目錄。如果您使用預設目錄,或是 /tmp 中的其他目錄,當您的系統定期刪除 /tmp 目錄中的檔案時,mod_fastcgi 就會中斷執行。
FastCgiIpcDir 指引會指定名稱作為用來在應用程式與 Web 伺服器之間進行通訊之具名管道的根目錄。以 >\\.\pipe\pipename. 格式定義名稱。管道名稱語法可以包含反斜線以外的任何字元。
FastCgiIpcDir 指引必須在任何 FastCgiServer 或 FastCgiExternalServer 指引之前,如此才能利用 UNIX Socket。請確定 Web 伺服器可以讀取、寫入及執行此目錄。應該沒有任何人能夠存取這個目錄。
FastCGIServer 指引
FastCGIServer 指引會將檔名定義成靜態 FastCGI 應用程式。
「程序管理程式」會以下面括弧中指定的預設配置來啟動應用程式的一個實例。如果靜態應用程式實例因故當掉,mod_fastcgi 模組就會產生另一個實例來取代,並且在警告記載層次記載此事件。
指引 | 說明 |
---|---|
語法 | FastCgiServer 檔名 [選項] |
範圍 | 伺服器配置 |
預設值 | 無 |
模組 | mod_fastcgi |
配置檔中的多個實例 | yes |
值 | 目錄或名稱 |
- appConnTimeout n(0 秒)。 等待連線至 FastCGI 應用程式完成的秒數,或是 0,代表使用封鎖 connect()。如果超過逾時值,就會產生 SERVER_ERROR。若為非零值,這個指示器是用在 select() 中的時間量,以寫入至非封鎖 connect() 傳回的檔案描述子。已證明非封鎖 connect() 在許多平台上都會發生問題。請參閱 -idle-timeout 選項;此選項會產生類似的結果,但可攜性較強。
- Idle-timeout n(30 秒)。 允許 FastCGI 應用程式為非作用中的秒數,超過此秒數後,要求即中斷,並且會在錯誤記載層次記載此事件。唯有當與 FastCGI 應用程式的連線擱置時,才會套用非作用中計時器。 如果應用程式未於此期間內回應佇列的要求,該要求即中斷。如果與應用程式的通訊完成,但與用戶端的通訊未完成(緩衝的回應),則不會套用此逾時。
- initial-env name [=value] none]none。傳入 FastCGI 應用程式起始環境中的名稱/值配對。如果要從 Apache 環境傳遞變數,請勿提供 "="(不是實際在該環境中的變數在定義時不包含值)。如果要定義不包含值的變數,請提供 "=",而不要包含值。您可以重複此選項。
- init-start-delay n(1 秒)。此應用程式的實例大量產生之間的最短秒數。此延遲會減少伺服器起始設定時,對系統的需求。
- Flush none。從應用程式收到資料時,強制寫入用戶端。依預設,mod_fastcgi 會將資料緩衝,以快速釋放應用程式。
- Listen-queue-depth n (100)。此應用程式的所有實例共用的 listen() 佇列深度(又稱為待辦事項)。較深的接聽佇列可讓伺服器處理暫時性的負載波動,而不會拒絕要求;此選項不會增加傳輸量。新增其他應用程式實例可增加傳輸量和效能,視應用程式和主機而定。
- Pass-header header none。傳入要求環境之「HTTP 要求標頭」的名稱。此選項可讓 CGI 環境能夠使用標頭內容。
- processes n (1)。在伺服器起始設定時,所要產生的應用程式實例數目。
- Priority n (0)。使用 setpriority() 指派給應用程式實例的程序優先順序。
- port n none。應用程式用來與 Web 伺服器通訊的 TCP 埠號 (1-65535)。此選項可讓網路上的其他機器存取應用程式。-socket 與 -port 選項互斥。
- Restart-delay n(5 秒)。 此應用程式的失敗實例重新大量產生之間的最短秒數。此延遲可防止損壞的應用程式使用太多系統資源。
- Socket 檔名:
- 在 UNIX 平台上:應用程式用來與 Web 伺服器通訊之 UNIX 網域 Socket 的檔名。此模組會在 FastCgiIpcDir 指定的目錄中建立 Socket。此選項可讓其他應用程式存取此應用程式,這些其他應用程式像是相同機器上的 cgi-fcgi,或是透過外部 FastCGI 應用程式定義的 FastCgiExternalServer。如果 -socket 和 -port 選項都未指定,則模組會產生 UNIX 網域 Socket 檔名。-socket 與 -port 選項互斥。
- 在 Windows 作業系統上:應用程式用來與 Web 伺服器通訊之管線的名稱。此模組會在 FastCgiIpcDir 指引指定的具名管線根之外建立具名管線。此選項可讓其他應用程式存取此應用程式,這些其他應用程式像是相同機器上的 cgi-fcgi,或是透過外部 FastCGI 應用程式定義的 FastCgiExternalServer。如果 -socket 和 -port 選項都未指定,則模組會為具名管線產生一個名稱。-socket 與 -port 選項互斥。如果檔名不是以斜線 (/) 開頭,就會假設此檔名相對於 ServerRoot。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
FastCGIsuEXEC 指引
FastCGIsuEXEC 指引支援 suEXEC-wrapper。
指引 | 說明 |
---|---|
語法 | FastCgiSuexec On | Off 檔名 |
範圍 | 伺服器配置 |
預設值 | FastCgiSuexec Off |
模組 | mod_fastcgi |
配置檔中的多個實例 | yes |
值 | FastCgiSuexec 指引需要 suEXEC 在 Apache for CGI 中啟用。如果要使用 Apache 所使用的相同 suEXEC-wrapper,請將 FastCgiSuexec 設為 On。如果要使用不同的 suEXEC-wrapper,請指定 suEXEC-wrapper 的檔名。如果檔名不是以斜線 (/) 開頭,就會假設檔名相對於 ServerRoot。 |
當您啟用 FastCgiSuexec 指引時,靜態或外部 FastCGI 應用程式定義的位置就變得很重要。這些差異會從虛擬伺服器中用來定義使用者和群組的「使用者」和「群組」指引,繼承其使用者和群組。「使用者」和「群組」指引應該在 FastCGI 應用程式定義之前。此功能不會將 FastCGI 應用程式限制在定義此功能的虛擬伺服器。此應用程式可以服務具有相同使用者和群組之任何虛擬伺服器提出的要求。如果收到對 FastCGI 應用程式的要求,但沒有以正確使用者和群組來執行的現有相符定義,則應用程式的動態實例會以正確的使用者和群組來執行。此動作可能會導致相同應用程式的多個複本以不同的使用者和群組來執行。如果這會造成問題,則防止其他虛擬伺服器導覽至應用程式,或是以相同的使用者和群組來配置虛擬伺服器。
如需 suEXEC 和可能之安全問題的相關資訊,請參閱 Apache 說明文件。