ngx_http_fastcgi_module 模組
ngx_http_fastcgi_module
模組允許將請求傳遞至 FastCGI 伺服器。
範例配置
location / { fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; }
指令
語法 |
fastcgi_bind |
---|---|
預設值 | — |
上下文 |
http , server , location |
此指令出現於 0.8.22 版。
讓連至 FastCGI 伺服器的連出連線,以指定的本機 IP 位址與選用的連接埠(1.11.2)為來源。參數值可以包含變數 (1.3.12)。特殊值 off
(1.3.12) 會取消從前一層設定繼承的 fastcgi_bind
指令效果,讓系統自動指派本機 IP 位址與連接埠。
transparent
參數 (1.11.0) 允許連至 FastCGI 伺服器的連出連線,以非本機 IP 位址為來源,例如,用戶端的實際 IP 位址。
fastcgi_bind $remote_addr transparent;
為了讓此參數運作,通常必須以超級使用者權限執行 nginx worker 程序。在 Linux 上則不需如此 (1.13.8),因為如果指定了 transparent
參數,worker 程序會從主程序繼承 CAP_NET_RAW
功能。此外,也必須設定核心路由表,以攔截來自 FastCGI 伺服器的網路流量。
語法 |
fastcgi_buffer_size |
---|---|
預設值 |
fastcgi_buffer_size 4k|8k; |
上下文 |
http , server , location |
設定用於讀取從 FastCGI 伺服器收到的回應第一部分的緩衝區的 size
。此部分通常包含小的回應標頭。預設情況下,緩衝區大小等於一個記憶體頁面。這會是 4K 或 8K,視平台而定。不過,可以將其縮小。
語法 |
fastcgi_buffering |
---|---|
預設值 |
fastcgi_buffering on; |
上下文 |
http , server , location |
此指令出現於 1.5.6 版。
啟用或停用來自 FastCGI 伺服器的回應緩衝處理。
啟用緩衝處理時,nginx 會盡快從 FastCGI 伺服器接收回應,並將其儲存到 fastcgi_buffer_size 和 fastcgi_buffers 指令設定的緩衝區中。如果整個回應無法放入記憶體中,則可以將其中一部分儲存到磁碟上的暫存檔。寫入暫存檔由 fastcgi_max_temp_file_size 和 fastcgi_temp_file_write_size 指令控制。
停用緩衝處理時,回應會以同步方式傳遞至用戶端,並在收到後立即傳遞。nginx 不會嘗試從 FastCGI 伺服器讀取整個回應。nginx 一次可從伺服器接收的最大資料量由 fastcgi_buffer_size 指令設定。
也可以在 “X-Accel-Buffering” 回應標頭欄位中傳遞 “yes
” 或 “no
” 來啟用或停用緩衝處理。可以使用 fastcgi_ignore_headers 指令來停用此功能。
語法 |
fastcgi_buffers |
---|---|
預設值 |
fastcgi_buffers 8 4k|8k; |
上下文 |
http , server , location |
設定用於讀取來自 FastCGI 伺服器回應的緩衝區的 number
和 size
,適用於單一連線。預設情況下,緩衝區大小等於一個記憶體頁面。這會是 4K 或 8K,視平台而定。
語法 |
fastcgi_busy_buffers_size |
---|---|
預設值 |
fastcgi_busy_buffers_size 8k|16k; |
上下文 |
http , server , location |
啟用來自 FastCGI 伺服器的回應緩衝處理時,限制在尚未完全讀取回應時,可能忙於將回應傳送至用戶端的緩衝區總 size
。在此期間,其餘的緩衝區可用於讀取回應,並且在需要時,將回應的一部分緩衝至暫存檔。預設情況下,size
受 fastcgi_buffer_size 和 fastcgi_buffers 指令設定的兩個緩衝區大小限制。
語法 |
fastcgi_cache |
---|---|
預設值 |
fastcgi_cache off; |
上下文 |
http , server , location |
定義用於快取的共用記憶體區域。相同的區域可以在多個位置使用。參數值可以包含變數 (1.7.9)。off
參數會停用從前一層設定繼承的快取。
語法 |
fastcgi_cache_background_update |
---|---|
預設值 |
fastcgi_cache_background_update off; |
上下文 |
http , server , location |
此指令出現於 1.11.10 版。
允許啟動背景子要求,以更新過期的快取項目,同時將過期的快取回應傳回給用戶端。請注意,在更新過期快取回應時,必須允許使用過期的快取回應。
語法 |
fastcgi_cache_bypass |
---|---|
預設值 | — |
上下文 |
http , server , location |
定義在哪些條件下不會從快取中提取回應。如果字串參數至少有一個值不為空且不等於「0」,則不會從快取中提取回應。
fastcgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment; fastcgi_cache_bypass $http_pragma $http_authorization;
可以與 fastcgi_no_cache 指令一起使用。
語法 |
fastcgi_cache_key |
---|---|
預設值 | — |
上下文 |
http , server , location |
定義快取的金鑰,例如
fastcgi_cache_key localhost:9000$request_uri;
語法 |
fastcgi_cache_lock |
---|---|
預設值 |
fastcgi_cache_lock off; |
上下文 |
http , server , location |
此指令出現於 1.1.12 版。
啟用時,每次只允許一個要求,根據 fastcgi_cache_key 指令識別,將要求傳遞至 FastCGI 伺服器,以填入新的快取元素。相同快取元素的其他要求將會等待回應出現在快取中,或是此元素的快取鎖定釋出,最多等到 fastcgi_cache_lock_timeout 指令設定的時間。
語法 |
fastcgi_cache_lock_age |
---|---|
預設值 |
fastcgi_cache_lock_age 5s; |
上下文 |
http , server , location |
此指令出現於 1.7.8 版。
如果傳遞至 FastCGI 伺服器以填入新快取元素的最後一個要求,在指定的 time
內尚未完成,則可以將另一個要求傳遞至 FastCGI 伺服器。
語法 |
fastcgi_cache_lock_timeout |
---|---|
預設值 |
fastcgi_cache_lock_timeout 5s; |
上下文 |
http , server , location |
此指令出現於 1.1.12 版。
設定 fastcgi_cache_lock 的逾時。當 time
過期時,要求將會傳遞至 FastCGI 伺服器,不過,回應將不會快取。
在 1.7.8 之前,回應可能會快取。
語法 |
fastcgi_cache_max_range_offset |
---|---|
預設值 | — |
上下文 |
http , server , location |
此指令出現於 1.11.6 版。
設定位元組範圍要求的位元組位移量。如果範圍超出位移量,範圍要求將會傳遞至 FastCGI 伺服器,且回應將不會快取。
語法 |
fastcgi_cache_methods |
---|---|
預設值 |
fastcgi_cache_methods GET HEAD; |
上下文 |
http , server , location |
此指令出現於 0.7.59 版。
如果用戶端要求方法在此指令中列出,則回應將會快取。「GET
」和「HEAD
」方法會一律新增至清單,不過建議明確指定它們。另請參閱 fastcgi_no_cache 指令。
語法 |
fastcgi_cache_min_uses |
---|---|
預設值 |
fastcgi_cache_min_uses 1; |
上下文 |
http , server , location |
設定在回應將會快取之前的要求 number
。
語法 |
fastcgi_cache_path |
---|---|
預設值 | — |
上下文 |
http |
設定快取的路徑和其他參數。快取資料儲存在檔案中。快取中的金鑰和檔案名稱都是將 MD5 函數套用至代理 URL 的結果。levels
參數定義快取的階層層級:從 1 到 3,每個層級接受值 1 或 2。例如,在以下配置中
fastcgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
快取中的檔案名稱看起來會像這樣
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
快取的回應會先寫入暫存檔,然後重新命名檔案。從 0.8.9 版開始,暫存檔和快取可以放在不同的檔案系統上。不過請注意,在這種情況下,檔案會跨兩個檔案系統複製,而不是執行成本較低的重新命名作業。因此建議,任何給定的位置,快取和保存暫存檔的目錄都放在相同的檔案系統上。暫存檔的目錄會根據 use_temp_path
參數 (1.7.10) 設定。如果省略此參數或將其設定為值 on
,則會使用 fastcgi_temp_path 指令針對指定位置設定的目錄。如果值設定為 off
,暫存檔將會直接放置在快取目錄中。
此外,所有有效的金鑰和有關資料的資訊都會儲存在共用記憶體區域中,其 name
和 size
由 keys_zone
參數設定。一個百萬位元組區域可以儲存約 8 千個金鑰。
作為商業訂閱的一部分,共用記憶體區域也會儲存擴展的快取資訊,因此,需要為相同數量的金鑰指定更大的區域大小。例如,一個百萬位元組區域可以儲存約 4 千個金鑰。
在 inactive
參數指定的時間內未存取的快取資料,會從快取中移除,無論其是否為最新資料。預設情況下,inactive
設定為 10 分鐘。
特殊的「快取管理員」程序會監控 max_size
參數設定的最大快取大小,以及 min_free
(1.19.1) 參數設定快取檔案系統上的最小可用空間量。當大小超過或沒有足夠的可用空間時,它會移除最近最少使用的資料。資料會以 manager_files
、manager_threshold
和 manager_sleep
參數 (1.11.5) 設定的迭代次數移除。在一次迭代中,刪除的項目不超過 manager_files
個(預設為 100 個)。一次迭代的持續時間受 manager_threshold
參數限制(預設為 200 毫秒)。在迭代之間,會暫停 manager_sleep
參數(預設為 50 毫秒)設定的時間。
在啟動後一分鐘,特殊的「快取載入器」程序會被啟動。它會將檔案系統上先前快取的資料資訊載入到快取區域。載入也是以迭代方式進行。在一次迭代中,載入的項目不會超過 loader_files
個(預設為 100)。此外,一次迭代的持續時間受 loader_threshold
參數限制(預設為 200 毫秒)。在迭代之間,會根據 loader_sleep
參數設定的暫停時間(預設為 50 毫秒)進行暫停。
此外,以下參數可作為我們的 商業訂閱 的一部分提供
-
purger
=on
|off
- 指示快取清除器是否會從磁碟中移除符合萬用字元鍵的快取項目(1.7.12)。將參數設定為
on
(預設為off
)將啟動「快取清除器」程序,該程序會永久迭代所有快取項目,並刪除符合萬用字元鍵的項目。 -
purger_files
=number
- 設定在一次迭代期間將掃描的項目數量(1.7.12)。預設情況下,
purger_files
設定為 10。 -
purger_threshold
=number
- 設定一次迭代的持續時間(1.7.12)。預設情況下,
purger_threshold
設定為 50 毫秒。 -
purger_sleep
=number
- 設定迭代之間的暫停時間(1.7.12)。預設情況下,
purger_sleep
設定為 50 毫秒。
在 1.7.3、1.7.7 和 1.11.10 版本中,快取標頭格式已變更。升級到較新的 nginx 版本後,先前快取的響應將被視為無效。
語法 |
fastcgi_cache_purge string ...; |
---|---|
預設值 | — |
上下文 |
http , server , location |
此指令出現在 1.5.7 版本中。
定義將請求視為快取清除請求的條件。如果字串參數中至少有一個值不為空且不等於「0」,則會移除具有相應快取鍵的快取項目。成功操作的結果以返回 204 (No Content) 響應表示。
如果清除請求的快取鍵以星號(「*
」)結尾,則會從快取中移除所有符合萬用字元鍵的快取項目。但是,這些項目將保留在磁碟上,直到因為閒置、或由快取清除器處理 (1.7.12),或用戶端嘗試存取它們時才會被刪除。
範例設定
fastcgi_cache_path /data/nginx/cache keys_zone=cache_zone:10m; map $request_method $purge_method { PURGE 1; default 0; } server { ... location / { fastcgi_pass backend; fastcgi_cache cache_zone; fastcgi_cache_key $uri; fastcgi_cache_purge $purge_method; } }
此功能可作為我們的 商業訂閱 的一部分提供。
語法 |
fastcgi_cache_revalidate |
---|---|
預設值 |
fastcgi_cache_revalidate off; |
上下文 |
http , server , location |
此指令出現在 1.5.7 版本中。
啟用使用具有「If-Modified-Since」和「If-None-Match」標頭欄位的條件請求來重新驗證過期的快取項目。
語法 |
fastcgi_cache_use_stale |
---|---|
預設值 |
fastcgi_cache_use_stale off; |
上下文 |
http , server , location |
決定在與 FastCGI 伺服器通訊期間發生錯誤時,可以使用過時快取響應的案例。該指令的參數與 fastcgi_next_upstream 指令的參數匹配。
如果無法選擇 FastCGI 伺服器來處理請求,error
參數也允許使用過時的快取響應。
此外,如果目前正在更新過時的快取響應,則 updating
參數允許使用它。這允許在更新快取資料時盡量減少對 FastCGI 伺服器的存取次數。
在響應過期後的指定秒數內,也可以直接在響應標頭中啟用使用過時的快取響應 (1.11.10)。這比使用指令參數的優先權低。
- 「Cache-Control」標頭欄位的「stale-while-revalidate」擴展允許在使用過時快取響應時進行更新。
- 「Cache-Control」標頭欄位的「stale-if-error」擴展允許在發生錯誤時使用過時的快取響應。
為了在填充新的快取元素時盡量減少對 FastCGI 伺服器的存取次數,可以使用 fastcgi_cache_lock 指令。
語法 |
fastcgi_cache_valid [ |
---|---|
預設值 | — |
上下文 |
http , server , location |
設定不同響應碼的快取時間。例如,以下指令
fastcgi_cache_valid 200 302 10m; fastcgi_cache_valid 404 1m;
設定代碼為 200 和 302 的響應快取 10 分鐘,代碼為 404 的響應快取 1 分鐘。
如果僅指定快取 time
fastcgi_cache_valid 5m;
則只會快取 200、301 和 302 響應。
此外,可以指定 any
參數以快取任何響應
fastcgi_cache_valid 200 302 10m; fastcgi_cache_valid 301 1h; fastcgi_cache_valid any 1m;
快取的參數也可以直接在響應標頭中設定。這比使用指令設定快取時間具有更高的優先權。
- 「X-Accel-Expires」標頭欄位設定響應的快取時間(以秒為單位)。零值將停用響應的快取。如果值以
@
字首開頭,則會設定一個自 Epoch 以來的絕對時間(以秒為單位),直到響應可快取為止。 - 如果標頭不包含「X-Accel-Expires」欄位,則可以在「Expires」或「Cache-Control」標頭欄位中設定快取參數。
- 如果標頭包含「Set-Cookie」欄位,則不會快取此類響應。
- 如果標頭包含帶有特殊值「
*
」的「Vary」欄位,則不會快取此類響應 (1.7.7)。如果標頭包含帶有另一個值的「Vary」欄位,則會快取此類響應,並考慮相應的請求標頭欄位 (1.7.7)。
可以使用 fastcgi_ignore_headers 指令停用處理這些響應標頭欄位中的一個或多個。
語法 |
fastcgi_catch_stderr |
---|---|
預設值 | — |
上下文 |
http , server , location |
設定一個字串,以在從 FastCGI 伺服器收到的響應的錯誤流中進行搜尋。如果找到 string
,則會認為 FastCGI 伺服器已返回無效的響應。這允許在 nginx 中處理應用程式錯誤,例如
location /php/ { fastcgi_pass backend:9000; ... fastcgi_catch_stderr "PHP Fatal error"; fastcgi_next_upstream error timeout invalid_header; }
語法 |
fastcgi_connect_timeout |
---|---|
預設值 |
fastcgi_connect_timeout 60s; |
上下文 |
http , server , location |
定義與 FastCGI 伺服器建立連線的逾時時間。應該注意的是,此逾時時間通常不能超過 75 秒。
語法 |
fastcgi_force_ranges |
---|---|
預設值 |
fastcgi_force_ranges off; |
上下文 |
http , server , location |
此指令出現在 1.7.7 版本中。
為來自 FastCGI 伺服器的快取和未快取響應啟用位元組範圍支援,無論這些響應中的「Accept-Ranges」欄位如何。
語法 |
fastcgi_hide_header |
---|---|
預設值 | — |
上下文 |
http , server , location |
預設情況下,nginx 不會將 FastCGI 伺服器響應中的「Status」和「X-Accel-...」標頭欄位傳遞給用戶端。 fastcgi_hide_header
指令設定其他將不傳遞的欄位。相反地,如果需要允許傳遞欄位,則可以使用 fastcgi_pass_header 指令。
語法 |
fastcgi_ignore_client_abort |
---|---|
預設值 |
fastcgi_ignore_client_abort off; |
上下文 |
http , server , location |
決定當用戶端關閉連線而不等待響應時,是否應關閉與 FastCGI 伺服器的連線。
語法 |
fastcgi_ignore_headers |
---|---|
預設值 | — |
上下文 |
http , server , location |
停用處理來自 FastCGI 伺服器的特定響應標頭欄位。可以忽略以下欄位:「X-Accel-Redirect」、「X-Accel-Expires」、「X-Accel-Limit-Rate」 (1.1.6)、「X-Accel-Buffering」 (1.1.6)、「X-Accel-Charset」 (1.1.6)、「Expires」、「Cache-Control」、「Set-Cookie」 (0.8.44) 和「Vary」 (1.7.7)。
如果未停用,處理這些標頭欄位會產生以下效果
- 「X-Accel-Expires」、「Expires」、「Cache-Control」、「Set-Cookie」和「Vary」設定響應的快取參數;
- 「X-Accel-Redirect」執行至指定 URI 的內部重新導向;
- 「X-Accel-Limit-Rate」設定傳輸響應至用戶端的速率限制;
- 「X-Accel-Buffering」啟用或停用響應的緩衝;
- 「X-Accel-Charset」設定響應所需的字元集。
語法 |
fastcgi_index |
---|---|
預設值 | — |
上下文 |
http , server , location |
在 URI 以斜線結尾時,設定一個將附加在 $fastcgi_script_name
變數值之後的檔案名稱。例如,使用以下設定
fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
和「/page.php
」請求時,SCRIPT_FILENAME
參數將等於「/home/www/scripts/php/page.php
」,而使用「/
」請求時,它將等於「/home/www/scripts/php/index.php
」。
語法 |
fastcgi_intercept_errors |
---|---|
預設值 |
fastcgi_intercept_errors off; |
上下文 |
http , server , location |
決定是否應將代碼大於或等於 300 的 FastCGI 伺服器響應傳遞給用戶端,或攔截並重新導向到 nginx,以便使用 error_page 指令進行處理。
語法 |
fastcgi_keep_conn |
---|---|
預設值 |
fastcgi_keep_conn off; |
上下文 |
http , server , location |
此指令出現在 1.1.4 版本中。
預設情況下,FastCGI 伺服器會在傳送響應後立即關閉連線。但是,當此指令設定為值 on
時,nginx 將指示 FastCGI 伺服器保持連線開啟。這對於 FastCGI 伺服器的 keepalive 連線正常運作是必要的。
語法 |
fastcgi_limit_rate |
---|---|
預設值 |
fastcgi_limit_rate 0; |
上下文 |
http , server , location |
此指令出現在 1.7.7 版本中。
限制從 FastCGI 伺服器讀取響應的速度。rate
以每秒位元組為單位指定。零值將停用速率限制。該限制是針對每個請求設定的,因此如果 nginx 同時開啟兩個與 FastCGI 伺服器的連線,則整體速率將是指定限制的兩倍。僅當啟用來自 FastCGI 伺服器的響應緩衝時,限制才起作用。參數值可以包含變數 (1.27.0)。
語法 |
fastcgi_max_temp_file_size |
---|---|
預設值 |
fastcgi_max_temp_file_size 1024m; |
上下文 |
http , server , location |
當啟用來自 FastCGI 伺服器的響應緩衝,且整個響應不符合 fastcgi_buffer_size 和 fastcgi_buffers 指令設定的緩衝區時,響應的一部分可以儲存到臨時檔案。此指令設定臨時檔案的最大 size
。一次寫入臨時檔案的資料大小由 fastcgi_temp_file_write_size 指令設定。
零值將停用響應緩衝到臨時檔案。
此限制不適用於將在磁碟上快取或儲存的響應。
語法 |
fastcgi_next_upstream |
---|---|
預設值 |
fastcgi_next_upstream error timeout; |
上下文 |
http , server , location |
指定在哪些情況下,請求應該被傳遞到下一個伺服器。
error
- 在建立與伺服器的連線、將請求傳遞給伺服器或讀取回應標頭時發生錯誤;
timeout
- 在建立與伺服器的連線、將請求傳遞給伺服器或讀取回應標頭時發生逾時;
invalid_header
- 伺服器返回空的回應或無效的回應;
http_500
- 伺服器返回代碼為 500 的回應;
http_503
- 伺服器返回代碼為 503 的回應;
http_403
- 伺服器返回代碼為 403 的回應;
http_404
- 伺服器返回代碼為 404 的回應;
http_429
- 伺服器返回代碼為 429 的回應 (1.11.13);
non_idempotent
- 通常,如果請求已傳送到上游伺服器,則具有非冪等方法 (
POST
、LOCK
、PATCH
) 的請求不會傳遞到下一個伺服器 (1.9.13);啟用此選項可明確允許重試此類請求; off
- 停用將請求傳遞到下一個伺服器。
請務必記住,只有在尚未將任何內容傳送給用戶端時,才有可能將請求傳遞到下一個伺服器。也就是說,如果在傳輸回應的中途發生錯誤或逾時,則無法修復此問題。
此指令還定義了何種情況被視為與伺服器通訊的不成功嘗試。error
、timeout
和 invalid_header
的情況始終被視為不成功嘗試,即使它們未在此指令中指定。http_500
、http_503
和 http_429
的情況僅在指令中指定時才被視為不成功嘗試。http_403
和 http_404
的情況永遠不會被視為不成功嘗試。
將請求傳遞到下一個伺服器的行為可以透過嘗試次數和時間來限制。
語法 |
fastcgi_next_upstream_timeout |
---|---|
預設值 |
fastcgi_next_upstream_timeout 0; |
上下文 |
http , server , location |
此指令出現在 1.7.5 版本中。
限制將請求傳遞到下一個伺服器的時間。 0
值會關閉此限制。
語法 |
fastcgi_next_upstream_tries |
---|---|
預設值 |
fastcgi_next_upstream_tries 0; |
上下文 |
http , server , location |
此指令出現在 1.7.5 版本中。
限制將請求傳遞到下一個伺服器的可能嘗試次數。 0
值會關閉此限制。
語法 |
fastcgi_no_cache |
---|---|
預設值 | — |
上下文 |
http , server , location |
定義在哪些條件下不會將回應儲存到快取。如果字串參數的至少一個值不為空且不等於「0」,則不會儲存回應。
fastcgi_no_cache $cookie_nocache $arg_nocache$arg_comment; fastcgi_no_cache $http_pragma $http_authorization;
可以與 fastcgi_cache_bypass 指令一起使用。
語法 |
fastcgi_param |
---|---|
預設值 | — |
上下文 |
http , server , location |
設定應傳遞給 FastCGI 伺服器的 parameter
。 value
可以包含文字、變數及其組合。如果目前層級上沒有定義 fastcgi_param
指令,則這些指令會從先前的組態層級繼承。
以下範例顯示了 PHP 的最低要求設定
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string;
SCRIPT_FILENAME
參數在 PHP 中用於判斷腳本名稱,而 QUERY_STRING
參數用於傳遞請求參數。
對於處理 POST
請求的腳本,也需要以下三個參數
fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length;
如果 PHP 是使用 --enable-force-cgi-redirect
組態參數建置的,則還應傳遞值為「200」的 REDIRECT_STATUS
參數
fastcgi_param REDIRECT_STATUS 200;
如果指令指定了 if_not_empty
(1.1.11),則僅當其值不為空時,才會將此類參數傳遞給伺服器
fastcgi_param HTTPS $https if_not_empty;
語法 |
fastcgi_pass |
---|---|
預設值 | — |
上下文 |
location , if in location |
設定 FastCGI 伺服器的位址。該位址可以指定為網域名稱或 IP 位址,以及連接埠
fastcgi_pass localhost:9000;
或作為 UNIX 網域通訊端路徑
fastcgi_pass unix:/tmp/fastcgi.socket;
如果網域名稱解析為多個位址,則將以循環方式使用所有位址。此外,位址可以指定為伺服器群組。
參數值可以包含變數。在這種情況下,如果位址指定為網域名稱,則會先在描述的伺服器群組中搜尋該名稱,如果找不到,則會使用解析器來判斷。
語法 |
fastcgi_pass_header |
---|---|
預設值 | — |
上下文 |
http , server , location |
允許將原本停用的標頭欄位從 FastCGI 伺服器傳遞到用戶端。
語法 |
fastcgi_pass_request_body |
---|---|
預設值 |
fastcgi_pass_request_body on; |
上下文 |
http , server , location |
指示是否將原始請求主體傳遞給 FastCGI 伺服器。另請參閱fastcgi_pass_request_headers 指令。
語法 |
fastcgi_pass_request_headers |
---|---|
預設值 |
fastcgi_pass_request_headers on; |
上下文 |
http , server , location |
指示是否將原始請求的標頭欄位傳遞給 FastCGI 伺服器。另請參閱fastcgi_pass_request_body 指令。
語法 |
fastcgi_read_timeout |
---|---|
預設值 |
fastcgi_read_timeout 60s; |
上下文 |
http , server , location |
定義從 FastCGI 伺服器讀取回應的逾時時間。逾時時間僅設定在兩個連續讀取操作之間,而不是針對整個回應的傳輸。如果 FastCGI 伺服器在此時間內未傳輸任何內容,則會關閉連線。
語法 |
fastcgi_request_buffering |
---|---|
預設值 |
fastcgi_request_buffering on; |
上下文 |
http , server , location |
此指令出現在 1.7.11 版本中。
啟用或停用用戶端請求主體的緩衝處理。
啟用緩衝處理時,會在將請求傳送到 FastCGI 伺服器之前,從用戶端讀取整個請求主體。
停用緩衝處理時,會立即將請求主體傳送到 FastCGI 伺服器。在這種情況下,如果 nginx 已經開始傳送請求主體,則無法將請求傳遞到下一個伺服器。
語法 |
fastcgi_send_lowat |
---|---|
預設值 |
fastcgi_send_lowat 0; |
上下文 |
http , server , location |
如果將指令設定為非零值,nginx 會嘗試透過使用 kqueue 方法的 NOTE_LOWAT
旗標或具有指定 size
的 SO_SNDLOWAT
通訊端選項,來盡量減少傳出連線到 FastCGI 伺服器的傳送操作次數。
在 Linux、Solaris 和 Windows 上會忽略此指令。
語法 |
fastcgi_send_timeout |
---|---|
預設值 |
fastcgi_send_timeout 60s; |
上下文 |
http , server , location |
設定將請求傳輸到 FastCGI 伺服器的逾時時間。逾時時間僅設定在兩個連續寫入操作之間,而不是針對整個請求的傳輸。如果 FastCGI 伺服器在此時間內未收到任何內容,則會關閉連線。
語法 |
fastcgi_socket_keepalive |
---|---|
預設值 |
fastcgi_socket_keepalive off; |
上下文 |
http , server , location |
此指令出現在 1.15.6 版本中。
設定傳出連線到 FastCGI 伺服器的「TCP keepalive」行為。依預設,通訊端會使用作業系統的設定。如果將指令設定為值「on
」,則會為通訊端開啟 SO_KEEPALIVE
通訊端選項。
語法 |
fastcgi_split_path_info |
---|---|
預設值 | — |
上下文 |
location |
定義一個正規表示式,用於擷取 $fastcgi_path_info
變數的值。正規表示式應有兩個擷取:第一個成為 $fastcgi_script_name
變數的值,第二個成為 $fastcgi_path_info
變數的值。例如,使用這些設定
location ~ ^(.+\.php)(.*)$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info;
和「/show.php/article/0001
」請求,SCRIPT_FILENAME
參數會等於「/path/to/php/show.php
」,而 PATH_INFO
參數會等於「/article/0001
」。
語法 |
fastcgi_store |
---|---|
預設值 |
fastcgi_store off; |
上下文 |
http , server , location |
啟用將檔案儲存到磁碟。 on
參數會儲存具有與 alias 或 root 指令對應路徑的檔案。 off
參數會停用檔案儲存。此外,可以使用具有變數的 string
來明確設定檔案名稱
fastcgi_store /data/www$original_uri;
檔案的修改時間會根據收到的「Last-Modified」回應標頭欄位設定。回應會先寫入暫存檔,然後重新命名該檔案。從 0.8.9 版開始,暫存檔和永久儲存區可以放在不同的檔案系統上。但是,請注意,在這種情況下,檔案會在兩個檔案系統之間複製,而不是進行便宜的重新命名操作。因此建議,對於任何給定的位置,儲存的檔案和由 fastcgi_temp_path 指令設定的保留暫存檔的目錄都放在同一個檔案系統上。
此指令可用於建立靜態不可變檔案的本機副本,例如
location /images/ { root /data/www; error_page 404 = /fetch$uri; } location /fetch/ { internal; fastcgi_pass backend:9000; ... fastcgi_store on; fastcgi_store_access user:rw group:rw all:r; fastcgi_temp_path /data/temp; alias /data/www/; }
語法 |
fastcgi_store_access |
---|---|
預設值 |
fastcgi_store_access user:rw; |
上下文 |
http , server , location |
設定新建立的檔案和目錄的存取權限,例如
fastcgi_store_access user:rw group:rw all:r;
如果指定了任何 group
或 all
存取權限,則可以省略 user
權限
fastcgi_store_access group:rw all:r;
語法 |
fastcgi_temp_file_write_size |
---|---|
預設值 |
fastcgi_temp_file_write_size 8k|16k; |
上下文 |
http , server , location |
當啟用將來自 FastCGI 伺服器的回應緩衝處理到暫存檔時,限制每次寫入暫存檔的資料 size
。依預設,size
受 fastcgi_buffer_size 和 fastcgi_buffers 指令設定的兩個緩衝區限制。暫存檔的最大大小由 fastcgi_max_temp_file_size 指令設定。
語法 |
fastcgi_temp_path |
---|---|
預設值 |
fastcgi_temp_path fastcgi_temp; |
上下文 |
http , server , location |
定義用於儲存從 FastCGI 伺服器接收的資料的暫存檔目錄。指定的目錄下最多可以使用三層子目錄階層。例如,在下列組態中
fastcgi_temp_path /spool/nginx/fastcgi_temp 1 2;
暫存檔可能如下所示
/spool/nginx/fastcgi_temp/7/45/00000123457
另請參閱 fastcgi_cache_path 指令的 use_temp_path
參數。
傳遞至 FastCGI 伺服器的參數
HTTP 請求標頭欄位會以參數形式傳遞至 FastCGI 伺服器。在以 FastCGI 伺服器執行的應用程式和腳本中,這些參數通常會以環境變數的形式提供。例如,“User-Agent” 標頭欄位會以 HTTP_USER_AGENT
參數傳遞。除了 HTTP 請求標頭欄位之外,還可以使用 fastcgi_param 指令傳遞任意參數。
內嵌變數
ngx_http_fastcgi_module
模組支援嵌入式變數,可用於使用 fastcgi_param 指令設定參數。
$fastcgi_script_name
- 請求 URI,或者如果 URI 以斜線結尾,則為請求 URI 加上由 fastcgi_index 指令設定的索引檔案名稱。此變數可用於設定
SCRIPT_FILENAME
和PATH_TRANSLATED
參數,這些參數決定 PHP 中的腳本名稱。例如,對於具有以下指令的 “/info/
” 請求fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
SCRIPT_FILENAME
參數將等於 “/home/www/scripts/php/info/index.php
”。當使用 fastcgi_split_path_info 指令時,
$fastcgi_script_name
變數等於指令設定的第一個捕獲集合的值。 $fastcgi_path_info
- 由 fastcgi_split_path_info 指令設定的第二個捕獲集合的值。此變數可用於設定
PATH_INFO
參數。