ngx_http_fastcgi_module模塊容許將請求傳遞到FastCGI服務器。php
Syntax: fastcgi_bind address [transparent] | off; Default: — Context: http, server, location This directive appeared in version 0.8.22.
使與FastCGI服務器的傳出鏈接源自具備可選端口(1.11.2)的指定本地IP地址。 參數值能夠包含變量(1.3.12)。 特殊值off(1.3.12)取消了從以前配置級別繼承的fastcgi_bind指令的影響,這容許系統自動分配本地IP地址和端口。html
Syntax: fastcgi_buffer_size size; Default: fastcgi_buffer_size 4k|8k; Context: http, server, location
設置用於讀取從FastCGI服務器接收的響應的第一部分的緩衝區大小。 這部分一般包含一個小的響應報文header。 默認狀況下,緩衝區大小等於一個內存頁。是4K或8K,取決於平臺。 然而,它能夠作得更小。nginx
Syntax: fastcgi_buffering on | off; Default: fastcgi_buffering on; Context: http, server, location This directive appeared in version 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指令禁用。web
Syntax: fastcgi_buffers number size; Default: fastcgi_buffers 8 4k|8k; Context: http, server, location
設置用於從FastCGI服務器讀取單個鏈接的響應的緩衝區的數量和大小。 默認狀況下,緩衝區大小等於一個內存頁。 是4K或8K,取決於平臺。正則表達式
Syntax: fastcgi_busy_buffers_size size; Default: fastcgi_busy_buffers_size 8k|16k; Context: http, server, location
當啓用來自FastCGI服務器的響應緩衝時,限制可能響應報文還沒有徹底讀取而忙於向客戶端發送響應的緩衝區的總大小。 同時,其他緩衝區可用於讀取響應,而且若是須要,緩衝對臨時文件的響應的一部分。 默認狀況下,大小受限於由fastcgi_buffer_size和fastcgi_buffers指令設置的兩個緩衝區的大小。緩存
Syntax: fastcgi_cache zone | off; Default: fastcgi_cache off; Context: http, server, location
定義用於緩存的共享內存區域。 同一區域能夠在幾個地方使用。 參數值能夠包含變量(1.7.9)。 off參數禁用從先前配置級別繼承的緩存。服務器
Syntax: fastcgi_cache_bypass string ...; Default: — Context: http, server, location
定義不會從緩存獲取響應的條件。 若是字符串參數的至少一個值不爲空,而且不等於「0」,則不會從緩存獲取響應:cookie
fastcgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment; fastcgi_cache_bypass $http_pragma $http_authorization;
能夠與fastcgi_no_cache指令一塊兒使用。app
Syntax: fastcgi_cache_key string; Default: — Context: http, server, location
定義用於緩存的鍵。ide
fastcgi_cache_key localhost:9000$request_uri;
Syntax: fastcgi_cache_lock on | off; Default: fastcgi_cache_lock off; Context: http, server, location This directive appeared in version 1.1.12.
當啓用時,每次只有一個請求將容許根據fastcgi_cache_key指令經過向FastCGI服務器傳遞請求來填充標識的新緩存元素。 相同高速緩存元素的其餘請求將等待響應出如今高速緩存中或高速緩存鎖中以釋放此元素,直到由fastcgi_cache_lock_timeout指令設置的時間。
Syntax: fastcgi_cache_lock_age time; Default: fastcgi_cache_lock_age 5s; Context: http, server, location This directive appeared in version 1.7.8.
若是傳遞到FastCGI服務器用於填充新的高速緩存元素的最後一個請求在指定時間內沒有完成,則能夠將另外一個請求傳遞給FastCGI服務器。
Syntax: fastcgi_cache_lock_timeout time; Default: fastcgi_cache_lock_timeout 5s; Context: http, server, location This directive appeared in version 1.1.12.
設置fastcgi_cache_lock的超時。 當時間到期時,請求將傳遞到FastCGI服務器,可是響應報文不會被緩存。
Notes:在1.7.8以前,響應報文能夠被緩存。
Syntax: fastcgi_cache_max_range_offset number; Default: — Context: http, server, location This directive appeared in version 1.11.6.
設置字節範圍請求的偏移量(以字節爲單位)。 若是範圍超出偏移量,範圍請求將傳遞到FastCGI服務器,而且響應不會被緩存。
Syntax: fastcgi_cache_methods GET | HEAD | POST ...; Default: fastcgi_cache_methods GET HEAD; Context: http, server, location This directive appeared in version 0.7.59.
若是客戶端請求方法列在此指令中,那麼響應將被緩存。 「GET」和「HEAD」方法老是添加到列表中,但建議明確指定它們。 另請參見fastcgi_no_cache指令。
Syntax: fastcgi_cache_min_uses number; Default: fastcgi_cache_min_uses 1; Context: http, server, location
設置在其後響應將被緩存的請求數。
Syntax: 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]; Default: — Context: 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
Syntax: fastcgi_cache_purge string ...; Default: — Context: http, server, location This directive appeared in version 1.5.7.
定義請求將被視爲緩存清除請求的條件。
詳細參考
Syntax: fastcgi_cache_revalidate on | off; Default: fastcgi_cache_revalidate off; Context: http, server, location This directive appeared in version 1.5.7.
容許使用具備「If-Modified-Since」和「If-None-Match」頭字段的條件請求從新驗證過時緩存項。
Syntax: fastcgi_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_503 | http_403 | http_404 | off ...; Default: fastcgi_cache_use_stale off; Context: http, server, location
肯定在與FastCGI服務器通訊期間發生錯誤時,可使用過期緩存響應的狀況。 指令的參數與fastcgi_next_upstream指令的參數匹配。
若是沒法選擇處理請求的FastCGI服務器,則錯誤參數還容許使用陳舊的緩存響應。
此外,若是更新參數當前正在被更新,則容許使用陳舊的緩存響應。 這容許在更新緩存數據時最大限度地減小對FastCGI服務器的訪問次數。
要在填充新緩存元素時最大限度地減小對FastCGI服務器的訪問次數,可使用fastcgi_cache_lock指令。
Syntax: fastcgi_cache_valid [code ...] time; Default: — Context: http, server, location
設置不一樣響應代碼的緩存時間。 例如,如下指令:
fastcgi_cache_valid 200 302 10m; fastcgi_cache_valid 404 1m;
對代碼200和302的響應設置10分鐘的緩存,對代碼404的響應設置爲1分鐘。
若是僅指定高速緩存時間:
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指令禁用對這些響應頭字段中的一個或多個的處理。
Syntax: fastcgi_catch_stderr string; Default: — Context: 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; }
Syntax: fastcgi_connect_timeout time; Default: fastcgi_connect_timeout 60s; Context: http, server, location
定義與FastCGI服務器創建鏈接的超時。 應該注意,該超時一般不能超過75秒。
Syntax: fastcgi_force_ranges on | off; Default: fastcgi_force_ranges off; Context: http, server, location This directive appeared in version 1.7.7.
不管這些響應中的「Accept-Ranges」字段如何,對FastCGI服務器的緩存和非緩存響應都啓用字節範圍支持。
Syntax: fastcgi_hide_header field; Default: — Context: http, server, location
默認狀況下,nginx不會將FastCGI服務器響應中的頭部字段「Status」和「X-Accel -...」傳遞給客戶端。 fastcgi_hide_header指令設置不會傳遞的附加字段。 若是相反,須要容許字段的傳遞,則可使用fastcgi_pass_header僞指令。
Syntax: fastcgi_ignore_client_abort on | off; Default: fastcgi_ignore_client_abort off; Context: http, server, location
肯定當客戶端在不等待響應的狀況下關閉鏈接時是否應關閉與FastCGI服務器的鏈接。
Syntax: fastcgi_ignore_headers field ...; Default: — Context: 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), and 「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」設置響應的所需字符集。
Syntax: fastcgi_index name; Default: — Context: http, server, location
在$ fastcgi_script_name變量的值中設置將附加在以斜槓結尾的URI後面的文件名。 例如,使用這些設置和「/page.php」請求,SCRIPT_FILENAME參數將等於「/home/www/scripts/php/page.php」,對於「/」請求,它將等於「/ home / www / scripts / php / index.php「。
fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
Syntax: fastcgi_intercept_errors on | off; Default: fastcgi_intercept_errors off; Context: http, server, location
肯定是否應將代碼大於或等於300的FastCGI服務器響應傳遞給客戶端,或者攔截並重定向到nginx以便使用error_page指令進行處理。
Syntax: fastcgi_keep_conn on | off; Default: fastcgi_keep_conn off; Context: http, server, location This directive appeared in version 1.1.4.
默認狀況下,FastCGI服務器將在發送響應後當即關閉鏈接。 可是,當此指令設置爲on時,nginx將指示FastCGI服務器保持鏈接打開。 這是必要的,特別是對於與FastCGI服務器的保持鏈接功能。
Syntax: fastcgi_limit_rate rate; Default: fastcgi_limit_rate 0; Context: http, server, location This directive appeared in version 1.7.7.
限制從FastCGI服務器讀取響應的速度。 速率以字節/秒指定。 零值禁用速率限制。 每一個請求設置限制,所以若是nginx同時打開與FastCFI服務器的兩個鏈接,則總速率將是指定限制的兩倍。 僅當啓用了來自FastCGI服務器的響應緩衝時,該限制才起做用
Syntax: fastcgi_max_temp_file_size size; Default: fastcgi_max_temp_file_size 1024m; Context: http, server, location
當啓用來自FastCGI服務器的響應緩衝,而且整個響應不適合由fastcgi_buffer_size和fastcgi_buffers指令設置的緩衝區時,響應的一部分能夠保存到臨時文件。 此僞指令設置臨時文件的最大大小。 一次寫入臨時文件的數據大小由fastcgi_temp_file_write_size指令設置。
零值禁用對臨時文件的響應緩衝。
Notes:此限制不適用於將緩存或存儲在磁盤上的響應。
Syntax: fastcgi_next_upstream error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | non_idempotent | off ...; Default: fastcgi_next_upstream error timeout; Context: http, server, location
指定請求應傳遞到下一個服務器的狀況:
error:在與服務器創建鏈接,向其傳遞請求或讀取響應報文header時發生錯誤;
timeout:在與服務器創建鏈接,向其傳遞請求或讀取響應報文header時發生超時;
invalid_header:服務器返回空響應或無效響應;
http_500:服務器返回了帶有代碼500的響應;
http_503:服務器返回具備代碼503的響應;
http_403:服務器返回帶有代碼403的響應;
http_404:服務器返回具備代碼404的響應;
non_idempotent:一般,若是請求已經被髮送到上游服務器(1.9.13),則具備非冪等方法的請求(POST,LOCK,PATCH)不被傳遞到下一個服務器;啓用此選項明確容許重試此類請求;
off:禁用將請求傳遞到下一個服務器。
應該記住,將請求傳遞到下一個服務器是可能的,若是尚未發送到客戶端。也就是說,若是在傳送響應的中間發生錯誤或超時,則固定不可能。
該指令還定義了與服務器通訊的失敗嘗試。錯誤,超時和invalid_header的狀況始終被認爲是不成功的嘗試,即便它們沒有在指令中指定。僅當在指令中指定http_500和http_503的狀況時,纔會將其視爲不成功嘗試。 http_403和http_404的狀況毫不會被認爲是失敗的嘗試。
向下一個服務器傳遞請求能夠受嘗試次數和時間限制。
Syntax: fastcgi_next_upstream_timeout time; Default: fastcgi_next_upstream_timeout 0; Context: http, server, location This directive appeared in version 1.7.5.
限制請求能夠傳遞到下一個服務器的時間。 0值關閉此限制。
Syntax: fastcgi_next_upstream_tries number; Default: fastcgi_next_upstream_tries 0; Context: http, server, location This directive appeared in version 1.7.5.
限制將請求傳遞到下一個服務器的可能嘗試次數。 0值關閉此限制。
Syntax: fastcgi_no_cache string ...; Default: — Context: http, server, location
定義響應不會保存到緩存的條件。 若是字符串參數的至少一個值不爲空,而且不等於「0」,則不會保存響應:
fastcgi_no_cache $cookie_nocache $arg_nocache$arg_comment; fastcgi_no_cache $http_pragma $http_authorization;
能夠與fastcgi_cache_bypass指令一塊兒使用。
Syntax: fastcgi_param parameter value [if_not_empty]; Default: — Context: http, server, location
設置應傳遞到FastCGI服務器的參數。 該值能夠包含文本,變量及其組合。 當且僅當沒有在當前級別上定義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配置參數構建的,那麼REDIRECT_STATUS參數也應該使用值「200」傳遞:
fastcgi_param REDIRECT_STATUS 200;
若是指令使用if_not_empty(1.1.11)指定,那麼這樣的參數不會傳遞到服務器,直到它的值不爲空:
fastcgi_param HTTPS $https if_not_empty;
Syntax: fastcgi_pass address; Default: — Context: location, if in location
設置FastCGI服務器的地址。 地址能夠指定爲域名或IP地址和端口:
fastcgi_pass localhost:9000;
若是域名解析爲多個地址,則全部這些地址都將以循環方式使用。 此外,能夠將地址指定爲服務器組。
Syntax: fastcgi_pass_header field; Default: — Context: http, server, location
容許從FastCGI服務器向客戶端傳遞禁用的標頭字段。
Syntax: fastcgi_pass_request_body on | off; Default: fastcgi_pass_request_body on; Context: http, server, location
指示是否將原始請求正文傳遞到FastCGI服務器。 另請參見fastcgi_pass_request_headers指令。
Syntax: fastcgi_pass_request_headers on | off; Default: fastcgi_pass_request_headers on; Context: http, server, location
指示原始請求的標頭字段是否傳遞到FastCGI服務器。 另請參見fastcgi_pass_request_body指令。
Syntax: fastcgi_read_timeout time; Default: fastcgi_read_timeout 60s; Context: http, server, location
定義從FastCGI服務器讀取響應的超時。 超時僅在兩個連續讀取操做之間設置,而不是用於傳輸整個響應。 若是FastCGI服務器在此時間內未傳輸任何內容,則鏈接將關閉。
Syntax: fastcgi_request_buffering on | off; Default: fastcgi_request_buffering on; Context: http, server, location This directive appeared in version 1.7.11.
啓用或禁用客戶端請求正文的緩衝。
當啓用緩衝時,在將請求發送到FastCGI服務器以前,從客戶端讀取整個請求主體。
當禁用緩衝時,請求主體在接收到時當即發送到FastCGI服務器。 在這種狀況下,若是nginx已經開始發送請求主體,則請求沒法傳遞到下一個服務器。
Syntax: fastcgi_send_lowat size; Default: fastcgi_send_lowat 0; Context: http, server, location
若是指令設置爲非零值,則nginx將嘗試經過使用kqueue方法的NOTE_LOWAT標誌或具備指定大小的SO_SNDLOWAT套接字選項,最小化對到FastCGI服務器的傳出鏈接的發送操做數。
在Linux,Solaris和Windows上將忽略此指令。
Syntax: fastcgi_send_timeout time; Default: fastcgi_send_timeout 60s; Context: http, server, location
設置將請求發送到FastCGI服務器的超時。 超時僅在兩個連續的寫操做之間設置,而不是用於傳輸整個請求。 若是FastCGI服務器在此時間內未收到任何內容,則鏈接將關閉。
Syntax: fastcgi_split_path_info regex; Default: — Context: location
定義捕獲$ fastcgi_path_info變量值的正則表達式。 正則表達式應該有兩個捕獲:第一個變爲$ fastcgi_script_name變量的值,第二個變爲$ fastcgi_path_info變量的值。 例如,使用這些設置和「/show.php/article/0001」請求,SCRIPT_FILENAME參數將等於「/path/to/php/show.php」,而且PATH_INFO參數將等於「/article/0001 「。
location ~ ^(.+\.php)(.*)$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info;
Syntax: fastcgi_store on | off | string; Default: fastcgi_store off; Context: http, server, location
啓用將文件保存到磁盤。 on參數使用與指令別名或根對應的路徑保存文件。 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/; }
Syntax: fastcgi_store_access users:permissions ...; Default: fastcgi_store_access user:rw; Context: http, server, location
設置新建立的文件和目錄的訪問權限,例如:
fastcgi_store_access user:rw group:rw all:r;
若是指定了任何組或全部訪問權限,則能夠省略用戶權限:
fastcgi_store_access group:rw all:r;
Syntax: fastcgi_temp_file_write_size size; Default: fastcgi_temp_file_write_size 8k|16k; Context: http, server, location
當啓用從FastCGI服務器到臨時文件的響應緩衝時,限制寫入臨時文件的數據大小。 默認狀況下,大小受限於由fastcgi_buffer_size和fastcgi_buffers指令設置的兩個緩衝區。 臨時文件的最大大小由fastcgi_max_temp_file_size指令設置。
Syntax: fastcgi_temp_path path [level1 [level2 [level3]]]; Default: fastcgi_temp_path fastcgi_temp; Context: 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參數。