nginx fastcgi模塊ngx_http_fastcgi_module詳細解析、使用手冊、完整翻譯

ngx_http_fastcgi_module 模塊容許將請求傳遞給 FastCGI 服務器php

 

示例配置

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

- 說明
語法 fastcgi_bind address [transparent] | off;
默認 ——
上下文 http、server、location
提示 該指令在 0.8.22 版本中出現

經過一個可選的端口(1.11.2)從指定的本地 IP 地址發出到 FastCGI 服務器的傳出鏈接。參數值能夠包含變量(1.3.12)。特殊值 off(1.3.12)取消從上層配置級別繼承到的 fastcgi_bind 指令做用,這容許系統自動分配本地 IP 地址和端口。html

transparent 參數(1.11.0)容許從非本地 IP 地址(例如來自客戶端的真實 IP 地址)的到 FastCGI 服務器的傳出鏈接:nginx

fastcgi_bind $remote_addr transparent; 

爲了使這個參數起做用,有必要以超級用戶權限運行 nginx 工做進程,並配置內核路由來攔截來自 FastCGI 服務器的網絡流量。git

fastcgi_buffer_size

- 說明
語法 fastcgi_buffer_size size;
默認 fastcgi_buffer_size 4k|8k;
上下文 http、server、location

設置讀取 FastCGI 服務器收到的響應的第一部分的緩衝區的 size(大小)。該部分一般包含一個小的響應頭。默認狀況下,緩衝區大小等於一個內存頁。爲 4K 或 8K,因平臺而異。可是,它能夠設置得更小。正則表達式

fastcgi_buffering

- 說明
語法 fastcgi_buffering on | off;
默認 fastcgi_buffering on;
上下文 http、server、location
提示 該指令在 1.5.6 版本中出現

啓用或禁用來自 FastCGI 服務器的響應緩衝。api

當啓用緩衝時,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 指令禁用此功能。cookie

fastcgi_buffes

- 說明
語法 fastcgi_buffes number size;
默認 fastcgi_buffers 8 4k|8k;
上下文 http、server、location

設置單個鏈接從 FastCGI 服務器讀取響應的緩衝區的 number (數量)和 size (大小)。默認狀況下,緩衝區大小等於一個內存頁。爲 4K 或 8K,因平臺而異。網絡

fastcgi_busy_buffers_size

- 說明
語法 fastcgi_busy_buffers_size size;
默認 fastcgi_busy_buffers_size 8k|16k;
上下文 http、server、location

當啓用 FastCGI 服務器響應緩衝時,限制緩衝區的總大小(size)在當響應還沒有被徹底讀取時可向客戶端發送響應。同時,其他的緩衝區能夠用來讀取響應,若是須要的話,緩衝部分響應到臨時文件中。默認狀況下,size 受 fastcgi_buffer_size 和 fastcgi_buffers 指令設置的兩個緩衝區的大小限制。

fastcgi_cache

- 說明
語法 fastcgi_cache zone | off;
默認 fastcgi_cache off;
上下文 http、server、location

定義用於緩存的共享內存區域。同一個區域能夠在幾個地方使用。參數值能夠包含變量(1.7.9)。off 參數將禁用從上級配置級別繼承的緩存配置。

fastcgi_cache_background_update

- 說明
語法 fastcgi_cache_background_update on | off;
默認 fastcgi_cache_background_update off;
上下文 http、server、location
提示 該指令在 1.11.10. 版本中出現

容許啓動後臺子請求來更新過時的緩存項,而過期的緩存響應則返回給客戶端。請注意,有必要在更新時容許使用陳舊的緩存響應。

fastcgi_cache_bypass

- 說明
語法 fastcgi_cache_bypass string ...;
默認 ——
上下文 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

- 說明
語法 fastcgi_cache_key string;
默認 ——
上下文 http、server、location

爲緩存定義一個 key,例如:

fastcgi_cache_key localhost:9000$request_uri; 

fastcgi_cache_lock

- 說明
語法 fastcgi_cache_lock on | off;
默認 fastcgi_cache_lock off;
上下文 http、server、location
提示 該指令在 1.1.12 版本中出現

當啓用時,同一時間只容許一個請求經過將請求傳遞給 FastCGI 服務器來填充 fastcgi_cache_key 指令標識的新緩存元素。同一緩存元素的其餘請求將等待響應出如今緩存中,或等待此元素的緩存鎖釋放,直到 fastcgi_cache_lock_timeout 指令設置的時間。

fastcgi_cache_lock_age

- 說明
語法 fastcgi_cache_lock_age time;
默認 fastcgi_cache_lock_age 5s;
上下文 http、server、location
提示 該指令在 1.7.8 版本中出現

若是傳遞給 FastCGI 服務器的最後一個請求填充新緩存元素沒能在指定的 time 內完成,則可能會有其餘另外一個請求被傳遞給 FastCGI 服務器。

fastcgi_cache_lock_timeout

- 說明
語法 fastcgi_cache_lock_timeout time;
默認 fastcgi_cache_lock_timeout 5s;
上下文 http、server、location
提示 該指令在 1.1.12 版本中出現

設置 fastcgi_cache_lock 的超時時間。當時間到期時,請求將被傳遞給 FastCGI 服務器,可是,響應不會被緩存。

在 1.7.8 以前,響應能夠被緩存。

fastcgi_cache_max_range_offset

- 說明
語法 fastcgi_cache_max_range_offset number;
默認 ——
上下文 http、server、location
提示 該指令在 1.11.6 版本中出現

爲 byte-range 請求設置字節偏移量。若是 range 超出 number(偏移量),range 請求將被傳遞給 FastCGI 服務器,而且不會緩存響應。

fastcgi_cache_methods

- 說明
語法 fastcgi_cache_methods GET | HEAD | POST ...;
默認 fastcgi_cache_methods GET HEAD;
上下文 http、server、location
提示 該指令在 0.7.59 版本中出現

若是此指令中存在當前客戶端請求方法,那麼響應將被緩存。雖然 GET 和 HEAD 方法老是在該列表中,但咱們仍是建議您明確指定它們。另請參閱 fastcgi_no_cache 指令。

fastcgi_cache_min_uses

- 說明
語法 fastcgi_cache_min_uses number;
默認 fastcgi_cache_min_uses 1;
上下文 http、server、location

設置指定數量(number)請求後響應將被緩存。

fastcgi_cache_path

- 說明
語法 fastcgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
默認 ——
上下文 http

設置緩存的路徑和其餘參數。緩存數據存儲在文件中。緩存中的 key 和文件名是代理 URL 通過 MD5 函數處理後獲得的值。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,臨時文件將直接放在緩存目錄中。

另外,全部活躍的 key 和有關數據的信息都存儲在共享內存區中,其名稱和大小由 keys_zone 參數配置。一個兆字節的區域能夠存儲大約 8 千個 key。

做爲商業訂閱的一部分,共享內存區還存儲其餘緩存信息,所以,須要爲相同數量的 key區域大小。例如,一個兆字節區域能夠存儲大約 4 千個 key。

在 inactive 參數指定的時間內未被訪問的緩存數據將從緩存中刪除。默認狀況下,inactive 設置爲 10 分鐘。

「緩存管理器」(cache manager)進程監視的最大緩存大小由 max_size 參數設置。當超過此大小時,它將刪除最近最少使用的數據。數據在由 manager_filesmanager_threshold 和 manager_sleep 參數(1.11.5)配置下進行迭代刪除。在一次迭代中,不會超過 manager_files 項被刪除(默認爲 100)。一次迭代的持續時間受到 manager_threshold 參數(默認爲 200 毫秒)的限制。在每次迭代之間存在間隔時間,由 manager_sleep 參數(默認爲 50 毫秒)配置。

開始後一分鐘,「緩存加載器」(cache loader)進程被激活。它將先前存儲在文件系統中的緩存數據的有關信息加載到緩存區中。加載也是在迭代中完成。在每一次迭代中,不會加載 loader_files 個項(默認狀況下爲 100)。此外,每一次迭代的持續時間受到 loader_threshold 參數的限制(默認狀況下爲 200 毫秒)。在迭代之間存在間隔時間,由 loader_sleep 參數(默認爲 50 毫秒)配置。

此外,如下參數做爲咱們商業訂閱的一部分:

  • purger=on|off 指明緩存清除程序(1.7.12)是否將與通配符鍵匹配的緩存條目從磁盤中刪除。將該參數設置爲 on(默認爲 off)將激活「緩存清除器」(cache purger)進程,該進程不斷遍歷全部緩存條目並刪除與通配符匹配的條目。

  • 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.三、1.7.7 和 1.11.10 版本中,緩存頭格式發生了更改。升級到更新的 nginx 版本後,之前緩存的響應將視爲無效。

fastcgi_cache_purge

- 說明
語法 fastcgi_cache_purge string ...;
默認 ——
上下文 http、server、location
提示 該指令在 1.5.7 版本中出現

定義將請求視爲緩存清除請求的條件。若是 string 參數中至少有一個不爲空的值而且不等於「0」,則帶有相應緩存鍵的緩存條目將被刪除。經過返回 204(無內容)響應來表示操做成功。

若是清除請求的緩存鍵以星號(*)結尾,則將匹配通配符鍵的全部緩存條目從緩存中刪除。可是,這些條目仍然保留在磁盤上,直到它們由於不活躍而被刪除或被緩存清除程序(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_purge on | off;
默認 fastcgi_cache_revalidate off;
上下文 http、server、location
提示 該指令在 1.5.7 版本中出現

開啓使用帶有 If-Modified-Since 和 If-None-Match 頭字段的條件請求對過時緩存項進行從新驗證。

fastcgi_cache_use_stale

- 說明
語法 fastcgi_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_503 | http_403 | http_404 | http_429 | off ...;
默認 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

- 說明
語法 fastcgi_cache_valid [code ...] time;
默認 ——
上下文 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

- 說明
語法 fastcgi_catch_stderr string;
默認 ——
上下文 http、server、location

設置一個字符串,用於在從 FastCGI 服務器接收到的響應的錯誤流中搜索匹配。若是找到該字符串,則認爲 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 time;
默認 fastcgi_connect_timeout 60s;
上下文 http、server、location

設置與 FastCGI 服務器創建鏈接的超時時間。須要注意的是,這個超時一般不能超過 75 秒。

fastcgi_force_ranges

- 說明
語法 fastcgi_force_ranges on | off;
默認 fastcgi_force_ranges off;
上下文 http、server、location
提示 該指令在 1.7.7 版本中出現

啓用來自 FastCGI 服務器的緩存和未緩存響應的 byte-range 支持,忽略響應中的 Accept-Ranges 頭字段。

fastcgi_hide_header

- 說明
語法 fastcgi_hide_header field;
默認 ——
上下文 http、server、location

默認狀況下,nginx 不會將 FastCGI 服務器響應中的頭字段 Status 和 X-Accel-... 傳遞給客戶端。fastcgi_hide_header 指令設置不會被傳遞的附加字段。可是,若是須要容許傳遞字段,則可使用 fastcgi_pass_header 指令。

fastcgi_ignore_client_abort

- 說明
語法 fastcgi_ignore_client_abort on | off;
默認 fastcgi_ignore_client_abort off;
上下文 http、server、location

肯定當客戶端關閉鏈接而不等待響應時是否關閉與 FastCGI 服務器的鏈接。

fastcgi_ignore_headers

- 說明
語法 fastcgi_ignore_headers field ...;
默認 ——
上下文 http、server、location

禁止處理來自 FastCGI 服務器的某些響應頭字段。如下字段將被忽略:X-Accel-RedirectX-Accel-ExpiresX-Accel-Limit-Rate(1.1.6)、X-Accel-Buffering(1.1.6)、X-Accel-Charset(1.1.6)、ExpiresCache-ControlSet-Cookie(0.8.44)和 Vary(1.7.7)。

若是未禁用,則處理這些頭字段產生如下效果:

  • X-Accel-ExpiresExpiresCache-ControlSet-Cookie 和 Vary 設置響應緩存的參數
  • X-Accel-Redirect 執行內部重定向到指定的 URI
  • X-Accel-Limit-Rate 設置響應的傳送速率限制回客戶端
  • X-Accel-Buffering 啓用或禁用緩衝響應
  • X-Accel-Charset 設置所需的響應字符集

fastcgi_index

- 說明
語法 fastcgi_index name;
默認 ——
上下文 http、server、location

在 $fastcgi_script_name 變量的值中設置一個文件名,該文件名追加到 URL 後面並以一個斜槓結尾。例如如下設置

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 on | off;
默認 fastcgi_intercept_errors off;
上下文 http、server、location

肯定當 FastCGI 服務器響應碼大於或等於 300 時是否應傳遞給客戶端,或者攔截並重定向到 nginx 以便使用 error_page 指令進行處理。

fastcgi_keep_conn

- 說明
語法 fastcgi_keep_conn on | off;
默認 fastcgi_keep_conn off;
上下文 http、server、location
提示 該指令在 1.1.4 版本中出現

默認狀況下,FastCGI 服務器將在發送響應後當即關閉鏈接。可是,若是當此指令設置爲 on 值,則 nginx 將指示 FastCGI 服務器保持鏈接處於打開狀態。這對保持 FastCGI 服務器鏈接 keepalive 尤其重要。

fastcgi_limit_rate

- 說明
語法 fastcgi_limit_rate rate;
默認 fastcgi_limit_rate 0;
上下文 http、server、location
提示 該指令在 1.7.7 版本中出現

限制讀取 FastCGI 服務器響應的速度。rate 以每秒字節數爲單位。零值則禁用速率限制。該限制是針對每一個請求設置的,所以若是 nginx 同時打開兩個鏈接到 FastCFI 服務器的鏈接,則總體速率將是指定限制的兩倍。該限制僅在啓用緩衝來自 FastCGI 服務器的響應時才起做用。

fastcgi_max_temp_file_size

- 說明
語法 fastcgi_max_temp_file_size size;
默認 fastcgi_max_temp_file_size 1024m;
上下文 http、server、location

當啓用緩衝](#fastcgi_buffering)來自 FastCGI 服務器的響應時而且整個響應不適合由 {fastcgi_buffer_size 和 fastcgi_buffers 指令設置的緩衝時,響應的一部分能夠保存到臨時文件中。該指令用於設置臨時文件的最大大小(size)。一次寫入臨時文件的數據大小由 fastcgi_temp_file_write_size 指令設置。

零值將禁用臨時文件響應緩衝。

此限制不適用於將要緩存存儲在磁盤上的響應。

fastcgi_next_upstream

- 說明
語法 fastcgi_next_upstream error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off ...
默認 fastcgi_next_upstream error timeout;
上下文 http、server、location

指定在哪些狀況下請求應傳遞給下一臺服務器:

  • erorr

    在與服務器創建鏈接、傳遞請求或讀取響應頭時發生錯誤

  • timeout

    在與服務器創建鏈接、傳遞請求或讀取響應頭時發生超時

  • invalid_header

    服務器返回了空的或無效的響應

  • http_500

    服務器返回 500 響應碼

  • http_503

    服務器返回 503 響應碼

  • http_403

    服務器返回 403 響應碼

  • http_404

    服務器返回 404 響應碼

  • http_429

    服務器返回 429 響應碼(1.11.13)

  • non_idempotent

    一般,若是請求已發送到上游服務器(1.9.13),則具備非冪等方法(POST、LOCK、PATCH)的請求不會傳遞到下一個服務器,使這個選項明確容許重試這樣的請求

  • off

    禁用將請求傳遞給下一個服務器

咱們應該記住,只有在沒有任何內容發送給客戶端的狀況下,才能將請求傳遞給下一臺服務器。也就是說,若是在響應傳輸過程當中發生錯誤或超時,要修復是不可能的。

該指令還定義了與服務器進行通訊的不成功嘗試erorrtimeout 和 invalid_header 的狀況老是被認爲是不成功的嘗試,即便它們沒有在指令中指定。只有在指令中指定了 http_500http_503 和 http_429 的狀況下,它們才被視爲不成功嘗試。http_403 和 http_404 的狀況永遠不會被視爲不成功嘗試。

將請求傳遞給下一臺服務器可能受到嘗試次數時間的限制。

fastcgi_next_upstream_timeout

- 說明
語法 fastcgi_next_upstream_timeout time;
默認 fastcgi_next_upstream_timeout 0;
上下文 http、server、location
提示 該指令在 1.7.5 版本中出現

限制請求能夠傳遞到下一個服務器的時間。0 值關閉此限制。

fastcgi_next_upstream_tries

- 說明
語法 fastcgi_next_upstream_tries number;
默認 fastcgi_next_upstream_tries 0;
上下文 http、server、location
提示 該指令在 1.7.5 版本中出現

限制將請求傳遞到下一個服務器的嘗試次數0 值關閉此限制。

fastcgi_no_cache

- 說明
語法 fastcgi_no_cache string ...;
默認 ——
上下文 http、server、location

定義響應不會保存到緩存中的條件。若是 string 參數中有一個值不爲空且不等於 0,則不會保存響應:

fastcgi_no_cache $cookie_nocache $arg_nocache$arg_comment; fastcgi_no_cache $http_pragma $http_authorization; 

能夠與 fastcgi_cache_bypass 指令一塊兒使用。

fastcgi_param

- 說明
語法 fastcgi_param parameter value [if_not_empty];
默認 ——
上下文 http、server、location

設置應傳遞給 FastCGI 服務器的 parameter (參數)。該值能夠包含文本、變量及其組合。當且僅當在當前級別上沒有定義 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

- 說明
語法 fastcgi_pass address;
默認 ——
上下文 http、server、location

設置 FastCGI 服務器的地址。該地址能夠指定爲域名或 IP 地址,以及端口:

fastcgi_pass localhost:9000; 

或者做爲 UNIX 域套接字路徑:

fastcgi_pass unix:/tmp/fastcgi.socket; 

若是域名解析爲多個地址,則全部這些地址都將以循環方式使用。另外,地址能夠被指定爲服務器組

參數值能夠包含變量。在這種狀況下,若是地址被指定爲域名,則在所描述的服務器組中搜索名稱,若是未找到,則使用解析器來肯定。

fastcgi_pass_header

- 說明
語法 fastcgi_pass_header field;
默認 ——
上下文 http、server、location

容許從 FastCGI 服務器向客戶端傳遞隱藏禁用的頭字段。

fastcgi_pass_request_body

- 說明
語法 fastcgi_pass_request_body on | off;
默認 fastcgi_pass_request_body on;
上下文 http、server、location

指示是否將原始請求主體傳遞給 FastCGI 服務器。另請參閱 fastcgi_pass_request_headers 指令。

fastcgi_pass_request_headers

- 說明
語法 fastcgi_pass_request_headers on | off;
默認 fastcgi_pass_request_headers on;
上下文 http、server、location

指示原始請求的頭字段是否傳遞給 FastCGI 服務器。另請參閱 fastcgi_pass_request_body 指令。

fastcgi_read_timeout

- 說明
語法 fastcgi_read_timeout time;
默認 fastcgi_read_timeout 60s;
上下文 http、server、location

定義從 FastCGI 服務器讀取響應的超時時間。超時設置在兩次連續的讀操做之間,而不是傳輸整個響應的過程。若是 FastCGI 服務器在此時間內沒有發送任何內容,則鏈接將被關閉。

fastcgi_request_buffering

- 說明
語法 fastcgi_request_buffering on | off;
默認 fastcgi_request_buffering on;
上下文 http、server、location
提示 該指令在 1.7.11 版本中出現

啓用或禁用客戶端請求體緩衝。

啓用緩衝時,在將請求發送到 FastCGI 服務器以前,將從客戶端取整個請求體。

當緩衝被禁用時,請求體在收到時當即發送到 FastCGI 服務器。在這種狀況下,若是 nginx 已經開始發送請求體,則請求不能傳遞到下一個服務器

fastcgi_send_lowat

- 說明
語法 fastcgi_send_lowat size;
默認 fastcgi_send_lowat 0;
上下文 http、server、location

若是指令設置爲非零值,則 nginx 將嘗試經過使用 kqueue 方式的 NOTE_LOWAT 標誌或 SO_SNDLOWAT 套接字選項,以指定的 size(大小)來最小化傳出鏈接到 FastCGI 服務器上的發送操做次數。

該指令在 Linux、Solaris 和 Windows 上被忽略。

fastcgi_send_timeout

- 說明
語法 fastcgi_send_timeout time;
默認 fastcgi_send_timeout 60s;
上下文 http、server、location

設置向 FastCGI 服務器發送請求的超時時間。超時設置在兩次連續寫入操做之間,而不是傳輸整個請求的過程。若是 FastCGI 服務器在此時間內沒有收到任何內容,則鏈接將關閉。

fastcgi_split_path_info

- 說明
語法 fastcgi_split_path_info regex;
默認 fastcgi_send_timeout 60s;
上下文 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 on | off | string;
默認 fastcgi_store off;
上下文 http、server、location

啓用將文件保存到磁盤。on 參數將文件保存爲與指令 alias 或 root 相對應的路徑。off 參數禁用保存文件。另外,可使用帶變量的字符串顯式設置文件名:

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 users:permissions ...;
默認 fastcgi_store_access user:rw;
上下文 http、server、location

爲新建立的文件和目錄設置訪問權限,例如:

fastcgi_store_access user:rw group:rw all:r; 

若是指定了任何組或全部訪問權限,則能夠省略用戶權限

fastcgi_store_access group:rw all:r; 

fastcgi_temp_file_write_size

- 說明
語法 fastcgi_temp_file_write_size size;
默認 fastcgi_temp_file_write_size 8k 16k;
上下文 http、server、location

設置當開啓緩衝 FastCGI 服務器響應到臨時文件時,限制寫入臨時文件的數據 size(大小)。默認狀況下,大小受 fastcgi_buffer_size 和 fastcgi_buffers 指令設置的兩個緩衝區限制。臨時文件的最大大小由 fastcgi_max_temp_file_size 指令設置。

fastcgi_temp_path

- 說明
語法 fastcgi_temp_path path [level1 [level2 [level3]]];
默認 astcgi_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 參數。

官方文檔:

http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html

相關文章
相關標籤/搜索