示例配置
指令
fastcgi_bind
fastcgi_buffer_size
fastcgi_buffering
fastcgi_buffers
fastcgi_busy_buffers_size
fastcgi_cache
fastcgi_cache_background_update
fastcgi_cache_bypass
fastcgi_cache_key
fastcgi_cache_lock
fastcgi_cache_lock_age
fastcgi_cache_lock_timeout
fastcgi_cache_max_range_offset
fastcgi_cache_methods
fastcgi_cache_min_uses
fastcgi_cache_path
fastcgi_cache_purge
fastcgi_cache_revalidate
fastcgi_cache_use_stale
fastcgi_cache_valid
fastcgi_catch_stderr
fastcgi_connect_timeout
fastcgi_force_ranges
fastcgi_hide_header
fastcgi_ignore_client_abort
fastcgi_ignore_headers
fastcgi_index
fastcgi_intercept_errors
fastcgi_keep_conn
fastcgi_limit_rate
fastcgi_max_temp_file_size
fastcgi_next_upstream
fastcgi_next_upstream_timeout
fastcgi_next_upstream_tries
fastcgi_no_cache
fastcgi_param
fastcgi_pass
fastcgi_pass_header
fastcgi_pass_request_body
fastcgi_pass_request_headers
fastcgi_read_timeout
fastcgi_request_buffering
fastcgi_send_lowat
fastcgi_send_timeout
fastcgi_split_path_info
fastcgi_store
fastcgi_store_access
fastcgi_temp_file_write_size
fastcgi_temp_path
傳遞給FastCGI服務(wù)器的參數(shù)
嵌入式變量
該ngx_http_fastcgi_module模塊允許將請(qǐng)求傳遞給FastCGI服務(wù)器冒掌。
示例配置
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地址 設(shè)為透明| 關(guān)閉;
默認(rèn):
—
語(yǔ)境:
http忘衍,服務(wù)器砌梆,位置
通過可選端口(1.11.2)從指定的本地IP地址發(fā)出到FastCGI服務(wù)器的傳出連接挂绰。參數(shù)值可以包含變量(1.3.12)。特殊值off(1.3.12)取消了fastcgi_bind從前一個(gè)配置級(jí)別繼承的指令的效果蓖谢,這允許系統(tǒng)自動(dòng)分配本地IP地址和端口珍语。
transparent參數(shù)(1.11.0)允許一個(gè)FastCGI的服務(wù)器傳出連接從一個(gè)非本地的IP地址發(fā)起形葬,例如,來自客戶端的實(shí)際IP地址:
fastcgi_bind $remote_addr transparent;
為了使此參數(shù)有效码荔,需要以超級(jí)用戶權(quán)限運(yùn)行nginx工作進(jìn)程漩勤,并配置內(nèi)核路由表以攔截來自FastCGI服務(wù)器的網(wǎng)絡(luò)流量。
句法:
fastcgi_buffer_size大小;
默認(rèn):
fastcgi_buffer_size 4k | 8k;
語(yǔ)境:
http缩搅,服務(wù)器越败,位置
設(shè)置size用于讀取從FastCGI服務(wù)器
收到的響應(yīng)的第一部分的緩沖區(qū)。這部分通常包含一個(gè)小的響應(yīng)頭硼瓣。默認(rèn)情況下究飞,緩沖區(qū)大小等于一個(gè)內(nèi)存頁(yè)面。這是4K或8K巨双,取決于平臺(tái)噪猾。但是,它可以做得更小筑累。
Syntax:
fastcgi_buffering on | off;
Default:
fastcgi_buffering on;
Context:
http, server, location
啟用或禁用來自FastCGI服務(wù)器的響應(yīng)緩沖袱蜡。
啟用緩沖時(shí),nginx會(huì)盡快收到來自FastCGI服務(wù)器的響應(yīng)慢宗,并將其保存到由fastcgi_buffer_size和fastcgi_buffers指令設(shè)置的緩沖區(qū)中坪蚁。如果整個(gè)響應(yīng)不適合內(nèi)存,則其一部分可以保存到磁盤上的臨時(shí)文件中镜沽。寫入臨時(shí)文件由fastcgi_max_temp_file_size和fastcgi_temp_file_write_size指令控制敏晤。
當(dāng)禁用緩沖時(shí),響應(yīng)會(huì)在收到時(shí)立即同步傳遞給客戶端缅茉。nginx不會(huì)嘗試從FastCGI服務(wù)器讀取整個(gè)響應(yīng)嘴脾。nginx一次可以從服務(wù)器接收的最大數(shù)據(jù)大小由fastcgi_buffer_size指令設(shè)置。
通過在“X-Accel-Buffering”響應(yīng)頭域中傳遞“ yes”或“ no”蔬墩,也可以啟用或禁用緩沖译打。可以使用fastcgi_ignore_headers指令禁用此功能拇颅。
句法:
fastcgi_buffers數(shù)字大小;
默認(rèn):
fastcgi_buffers 8 4k | 8k;
語(yǔ)境:
http奏司,服務(wù)器,位置
設(shè)置number和size用于讀取從FastCGI的服務(wù)器的響應(yīng)樟插,供用于單個(gè)連接的緩沖器韵洋。默認(rèn)情況下竿刁,緩沖區(qū)大小等于一個(gè)內(nèi)存頁(yè)面。這是4K或8K搪缨,取決于平臺(tái)食拜。
句法:
fastcgi_busy_buffers_size大小;
默認(rèn):
fastcgi_busy_buffers_size 8k | 16k;
語(yǔ)境:
http,服務(wù)器勉吻,位置
當(dāng)啟用FastCGI服務(wù)器的響應(yīng)緩沖時(shí)监婶,限制size可能正忙于向客戶端發(fā)送響應(yīng)的緩沖區(qū)總數(shù),而響應(yīng)尚未完全讀取齿桃。同時(shí)惑惶,其余的緩沖區(qū)可以用于讀取響應(yīng),并且如果需要的話短纵,緩沖部分對(duì)臨時(shí)文件的響應(yīng)廊营。默認(rèn)情況下畅涂,size受fastcgi_buffer_size和fastcgi_buffers指令設(shè)置的兩個(gè)緩沖區(qū)大小的限制杈笔。
句法:
fastcgi_cache區(qū)域| 關(guān)閉;
默認(rèn):
fastcgi_cache關(guān)閉;
語(yǔ)境:
http序六,服務(wù)器,位置
定義用于緩存的共享內(nèi)存區(qū)域悠就。同一個(gè)區(qū)域可以在幾個(gè)地方使用千绪。參數(shù)值可以包含變量(1.7.9)。該off參數(shù)禁用從先前配置級(jí)別繼承的緩存梗脾。
句法:
fastcgi_cache_background_update 開啟|關(guān)閉;
默認(rèn):
fastcgi_cache_background_update 關(guān)閉;
語(yǔ)境:
http荸型,服務(wù)器,位置
允許啟動(dòng)后臺(tái)子請(qǐng)求來更新過期的緩存項(xiàng)目炸茧,而過時(shí)的緩存響應(yīng)則返回給客戶端瑞妇。請(qǐng)注意,有必要在更新時(shí)允許使用陳舊的緩存響應(yīng)梭冠。
句法:
fastcgi_cache_bypass string ...;
默認(rèn):
—
語(yǔ)境:
http辕狰,服務(wù)器,位置
定義不會(huì)從緩存中獲取響應(yīng)的條件控漠。如果字符串參數(shù)中至少有一個(gè)值不為空且不等于“0”蔓倍,則不會(huì)從緩存中獲取響應(yīng):
fastcgi_cache_bypass arg_nocache
http_pragma $http_authorization;
可以和fastcgi_no_cache指令一起使用。
句法:
fastcgi_cache_key字符串;
默認(rèn):
—
語(yǔ)境:
http盐捷,服務(wù)器柬脸,位置
例如,定義緩存的關(guān)鍵字
fastcgi_cache_key localhost:9000$request_uri;
句法:
fastcgi_cache_lock開啟| 關(guān)閉;
默認(rèn):
fastcgi_cache_lock關(guān)閉;
語(yǔ)境:
http毙驯,服務(wù)器,位置
啟用時(shí)灾测,通過將請(qǐng)求傳遞給FastCGI服務(wù)器爆价,每次只允許一個(gè)請(qǐng)求填充根據(jù)fastcgi_cache_key指令標(biāo)識(shí)的新緩存元素垦巴。同一緩存元素的其他請(qǐng)求將等待響應(yīng)出現(xiàn)在緩存中,或等待釋放此元素的緩存鎖定铭段,直到由fastcgi_cache_lock_timeout指令設(shè)置的時(shí)間骤宣。
句法:
fastcgi_cache_lock_age時(shí)間;
默認(rèn):
fastcgi_cache_lock_age 5s;
語(yǔ)境:
http,服務(wù)器序愚,位置
如果傳遞給FastCGI服務(wù)器的用于填充新緩存元素的最后一個(gè)請(qǐng)求尚未完成指定time憔披,則可以將另一個(gè)請(qǐng)求傳遞給FastCGI服務(wù)器。
句法:
fastcgi_cache_lock_timeout時(shí)間;
默認(rèn):
fastcgi_cache_lock_timeout 5s;
語(yǔ)境:
http爸吮,服務(wù)器芬膝,位置
為fastcgi_cache_lock設(shè)置超時(shí)。當(dāng)time到期時(shí)形娇,請(qǐng)求將被傳遞給FastCGI服務(wù)器锰霜,但是,響應(yīng)不會(huì)被緩存桐早。
在1.7.8之前癣缅,響應(yīng)可以被緩存。
句法:
fastcgi_cache_max_range_offset數(shù)字;
默認(rèn):
—
語(yǔ)境:
http哄酝,服務(wù)器友存,位置
為字節(jié)范圍請(qǐng)求設(shè)置字節(jié)偏移量。如果范圍超出偏移量陶衅,則范圍請(qǐng)求將傳遞給FastCGI服務(wù)器屡立,并且不會(huì)緩存響應(yīng)。
句法:
fastcgi_cache_methods GET | HEAD | POST ...;
默認(rèn):
fastcgi_cache_methods GET HEAD;
語(yǔ)境:
http万哪,服務(wù)器侠驯,位置
如果此指令中列出了客戶端請(qǐng)求方法,那么響應(yīng)將被緩存奕巍∫鞑撸“ GET”和“ HEAD”方法總是添加到列表中,但建議您明確指定它們的止。另請(qǐng)參閱fastcgi_no_cache指令檩坚。
句法:
fastcgi_cache_min_uses 數(shù)字;
默認(rèn):
fastcgi_cache_min_uses 1;
語(yǔ)境:
http,服務(wù)器诅福,位置
設(shè)置number請(qǐng)求之后的響應(yīng)將被緩存匾委。
句法:
fastcgi_cache_path path levels = levels keys_zone = name:size inactive = time manager_files = number manager_threshold = time loader_sleep = time purger = on | off purger_sleep = time;
默認(rèn):
—
語(yǔ)境:
HTTP
設(shè)置緩存的路徑和其他參數(shù)。緩存數(shù)據(jù)存儲(chǔ)在文件中氓润。緩存中的密鑰和文件名都是將MD5函數(shù)應(yīng)用于代理URL的結(jié)果赂乐。該levels參數(shù)定義了緩存的層次結(jié)構(gòu)級(jí)別:從1到3,每個(gè)級(jí)別接受值1或2.例如咖气,在以下配置中
fastcgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
緩存中的文件名將如下所示:
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
首先將緩存的響應(yīng)寫入臨時(shí)文件挨措,然后重命名該文件挖滤。從0.8.9版開始,臨時(shí)文件和緩存可以放在不同的文件系統(tǒng)上浅役。但是斩松,請(qǐng)注意,在這種情況下觉既,文件將跨兩個(gè)文件系統(tǒng)復(fù)制惧盹,而不是廉價(jià)的重命名操作。因此建議瞪讼,對(duì)于任何給定的位置钧椰,緩存和保存臨時(shí)文件的目錄都放在同一個(gè)文件系統(tǒng)上。臨時(shí)文件的目錄根據(jù)use_temp_path參數(shù)(1.7.10)設(shè)置尝艘。如果忽略此參數(shù)或設(shè)置為該值on演侯,則將使用由給定位置的fastcgi_temp_path指令設(shè)置的目錄。如果該值設(shè)置為off背亥,臨時(shí)文件將直接放入緩存目錄中秒际。
此外,所有的活性密鑰和關(guān)于數(shù)據(jù)的信息被存儲(chǔ)在共享存儲(chǔ)器區(qū)狡汉,其name與size由所述被配置keys_zone的參數(shù)娄徊。一個(gè)兆字節(jié)的區(qū)域可以存儲(chǔ)大約8千個(gè)密鑰。
作為商業(yè)訂閱的一部分盾戴,共享內(nèi)存區(qū)域還存儲(chǔ)擴(kuò)展緩存信息寄锐,因此,需要為相同數(shù)量的密鑰指定更大的區(qū)域大小尖啡。例如橄仆,一個(gè)兆字節(jié)區(qū)域可以存儲(chǔ)大約4千個(gè)密鑰。
在inactive參數(shù)指定的時(shí)間內(nèi)未訪問的緩存數(shù)據(jù)將從緩存中刪除衅斩,而不管其新鮮度如何盆顾。默認(rèn)情況下,inactive設(shè)置為10分鐘畏梆。
特殊的“緩存管理器”進(jìn)程監(jiān)視由max_size參數(shù)設(shè)置的最大緩存大小您宪。 當(dāng)超過此大小時(shí),它將刪除最近最少使用的數(shù)據(jù)奠涌。 數(shù)據(jù)在由manager_files宪巨,manager_threshold和manager_sleep參數(shù)(1.11.5)配置的迭代中刪除。 在一次迭代中溜畅,不會(huì)超過manager_files項(xiàng)目被刪除(默認(rèn)為100)捏卓。 一次迭代的持續(xù)時(shí)間受到manager_threshold參數(shù)(默認(rèn)為200毫秒)的限制。 在迭代之間慈格,會(huì)創(chuàng)建一個(gè)由manager_sleep參數(shù)(默認(rèn)為50毫秒)配置的暫停天吓。
開始后一分鐘贿肩,特殊的“緩存加載器”進(jìn)程被激活。 它將有關(guān)先前緩存的文件系統(tǒng)中存儲(chǔ)的數(shù)據(jù)的信息加載到緩存區(qū)中龄寞。 加載也在迭代中完成。 在一次迭代中汤功,不會(huì)加載loader_files項(xiàng)目(默認(rèn)情況下為100)物邑。 此外,一次迭代的持續(xù)時(shí)間受到loader_threshold參數(shù)的限制(默認(rèn)情況下為200毫秒)滔金。 在迭代之間色解,會(huì)創(chuàng)建一個(gè)由loader_sleep參數(shù)(默認(rèn)為50毫秒)配置的暫停。
此外餐茵,以下參數(shù)可作為我們商業(yè)訂閱的一部分:
purger= on| off指示緩存清除程序(1.7.12)是否將從磁盤中刪除與通配符鍵匹配的緩存條目科阎。將參數(shù)設(shè)置為on(默認(rèn)為off)將激活“緩存清除器”進(jìn)程,該進(jìn)程永久遍歷所有緩存條目并刪除與通配符鍵匹配的條目忿族。purger_files= number設(shè)置在一次迭代期間將被掃描的項(xiàng)目數(shù)量(1.7.12)锣笨。默認(rèn)情況下,purger_files設(shè)置為10. purger_threshold= number設(shè)置一次迭代的持續(xù)時(shí)間(1.7.12)道批。默認(rèn)情況下错英,purger_threshold設(shè)置為50毫秒。purger_sleep= number在迭代之間設(shè)置暫停(1.7.12)隆豹。默認(rèn)情況下椭岩,purger_sleep設(shè)置為50毫秒。
在版本1.7.3,1.7.7和1.11.10緩存頭格式中進(jìn)行了更改璃赡。升級(jí)到更新的nginx版本后判哥,以前緩存的響應(yīng)將被視為無效。
句法:
fastcgi_cache_purge string ...;
默認(rèn):
—
語(yǔ)境:
http碉考,服務(wù)器塌计,位置
定義將請(qǐng)求視為緩存清除請(qǐng)求的條件。如果字符串參數(shù)中至少有一個(gè)值不為空并且不等于“0”豆励,則帶有相應(yīng)緩存鍵的緩存條目將被刪除夺荒。通過返回204(無內(nèi)容)響應(yīng)來指示成功操作的結(jié)果。
如果清除請(qǐng)求的緩存鍵以星號(hào)(“ *”)結(jié)尾良蒸,則匹配通配符鍵的所有緩存條目將從緩存中刪除技扼。但是,這些條目將保留在磁盤上嫩痰,直到它們被刪除以進(jìn)行不活動(dòng)或由緩存清除程序(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;
}
}
該功能可作為我們商業(yè)訂閱的一部分串纺。
句法:
fastcgi_cache_revalidate 開啟|關(guān)閉;
默認(rèn):
fastcgi_cache_revalidate 關(guān)閉;
語(yǔ)境:
http丽旅,服務(wù)器椰棘,位置
使用帶有“If-Modified-Since”和“If-None-Match”標(biāo)頭字段的條件請(qǐng)求啟用對(duì)過期緩存項(xiàng)目的重新驗(yàn)證。
句法:
fastcgi_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_503 | http_403 | http_404 | http_429 | off ...;
默認(rèn):
fastcgi_cache_use_stale關(guān)閉;
語(yǔ)境:
http榄笙,服務(wù)器邪狞,位置
確定在與FastCGI服務(wù)器通信期間發(fā)生錯(cuò)誤時(shí)可以使用過時(shí)緩存響應(yīng)的情況。該指令的參數(shù)與fastcgi_next_upstream指令的參數(shù)相匹配茅撞。
如果無法選擇FastCGI服務(wù)器處理請(qǐng)求帆卓,則error參數(shù)還允許使用陳舊的緩存響應(yīng)。
此外米丘,如果updating參數(shù)當(dāng)前正在更新剑令,則該參數(shù)允許使用陳舊的緩存響應(yīng)。這樣可以在更新緩存數(shù)據(jù)時(shí)最大限度地減少對(duì)FastCGI服務(wù)器的訪問次數(shù)拄查。
使用陳舊的緩存響應(yīng)也可以在響應(yīng)變?yōu)殛惻f(1.11.10)后的指定秒數(shù)內(nèi)直接在響應(yīng)頭中啟用吁津。這比使用指令參數(shù)的優(yōu)先級(jí)低。
“Cache-Control”頭字段的“ reale-revalidate ”擴(kuò)展允許使用陳舊的緩存響應(yīng)堕扶,如果它正在更新碍脏。
“Cache-Control”頭字段的“ stale-if-error ”擴(kuò)展允許在發(fā)生錯(cuò)誤時(shí)使用陳舊的緩存響應(yīng)。
為了最大限度地減少填充新緩存元素時(shí)對(duì)FastCGI服務(wù)器的訪問次數(shù)挣柬,可以使用fastcgi_cache_lock指令潮酒。
句法:
fastcgi_cache_valid code ... time;
默認(rèn):
—
語(yǔ)境:
http,服務(wù)器邪蛔,位置
為不同的響應(yīng)代碼設(shè)置緩存時(shí)間急黎。例如,以下指令
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 404 1m;
對(duì)代碼為200和302的響應(yīng)設(shè)置10分鐘緩存侧到,對(duì)代碼為404的響應(yīng)設(shè)置為1分鐘勃教。
如果只指定了緩存時(shí)間
fastcgi_cache_valid 5m;
那么只緩存200,301和302響應(yīng)。
另外匠抗,可以指定any參數(shù)來緩存任何響應(yīng):
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 301 1h;
fastcgi_cache_valid any 1m;
緩存參數(shù)也可以直接在響應(yīng)頭中設(shè)置故源。這比使用指令設(shè)置緩存時(shí)間具有更高的優(yōu)先級(jí)。
“X-Accel-Expires”標(biāo)題字段以秒為單位設(shè)置響應(yīng)的緩存時(shí)間汞贸。零值會(huì)禁用響應(yīng)的緩存绳军。如果值以@前綴開頭,則它設(shè)置自Epoch以來的絕對(duì)時(shí)間(以秒為單位)矢腻,最多可以緩存該響應(yīng)门驾。
如果標(biāo)題不包含“X-Accel-Expires”字段,則可以在標(biāo)題字段“Expires”或“Cache-Control”中設(shè)置緩存參數(shù)多柑。
如果標(biāo)題包含“Set-Cookie”字段奶是,則不會(huì)緩存這樣的響應(yīng)。
如果頭部包含具有特殊值“ *” 的“Vary”字段,則這種響應(yīng)不會(huì)被緩存(1.7.7)聂沙。如果頭部包含帶有另一個(gè)值的“Vary”字段秆麸,則考慮到相應(yīng)的請(qǐng)求頭字段(1.7.7),這樣的響應(yīng)將被緩存及汉。
使用fastcgi_ignore_headers指令可以禁用一個(gè)或多個(gè)響應(yīng)頭字段的處理沮趣。
句法:
fastcgi_catch_stderr字符串;
默認(rèn):
—
語(yǔ)境:
http,服務(wù)器豁生,位置
設(shè)置一個(gè)字符串兔毒,用于在從FastCGI服務(wù)器接收到的響應(yīng)的錯(cuò)誤流中搜索。如果string找到甸箱,則認(rèn)為FastCGI服務(wù)器已返回?zé)o效響應(yīng)。這允許處理nginx中的應(yīng)用程序錯(cuò)誤迅脐,例如:
location /php {
fastcgi_pass backend:9000;
...
fastcgi_catch_stderr "PHP Fatal error";
fastcgi_next_upstream error timeout invalid_header;
}
句法:
fastcgi_connect_timeout時(shí)間;
默認(rèn):
fastcgi_connect_timeout 60s;
語(yǔ)境:
http芍殖,服務(wù)器,位置
定義與FastCGI服務(wù)器建立連接的超時(shí)時(shí)間谴蔑。應(yīng)該指出的是豌骏,這個(gè)超時(shí)通常不能超過75秒。
句法:
fastcgi_force_ranges 開啟|關(guān)閉;
默認(rèn):
fastcgi_force_ranges 關(guān)閉;
語(yǔ)境:
http隐锭,服務(wù)器窃躲,位置
無論這些響應(yīng)中的“接受范圍”字段如何,都支持來自FastCGI服務(wù)器的緩存和未緩存響應(yīng)的字節(jié)范圍支持钦睡。
句法:
fastcgi_hide_header字段;
默認(rèn):
—
語(yǔ)境:
http蒂窒,服務(wù)器,位置
默認(rèn)情況下荞怒,nginx不會(huì)將FastCGI服務(wù)器響應(yīng)中的頭字段“Status”和“X-Accel -...”傳遞給客戶端洒琢。該fastcgi_hide_header指令設(shè)置了不會(huì)傳遞的附加字段。相反褐桌,如果需要允許傳遞字段衰抑,則可以使用fastcgi_pass_header指令。
句法:
fastcgi_ignore_client_abort開啟| 關(guān)閉;
默認(rèn):
fastcgi_ignore_client_abort關(guān)閉;
語(yǔ)境:
http荧嵌,服務(wù)器呛踊,位置
確定當(dāng)客戶端關(guān)閉連接而不等待響應(yīng)時(shí)是否應(yīng)關(guān)閉與FastCGI服務(wù)器的連接。
句法:
fastcgi_ignore_headers字段...;
默認(rèn):
—
語(yǔ)境:
http啦撮,服務(wù)器谭网,位置
禁止處理來自FastCGI服務(wù)器的某些響應(yīng)頭字段。以下字段可以忽略:“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”設(shè)置響應(yīng)緩存的參數(shù);
“X-Accel-Redirect”執(zhí)行內(nèi)部重定向到指定的URI;
“X-Accel-Limit-Rate”設(shè)置向客戶傳送回復(fù)的速率限制;
“X-Accel-Buffering”啟用或禁用緩沖響應(yīng);
“X-Accel-Charset”設(shè)置所需的響應(yīng)字符集。
句法:
fastcgi_index名稱;
默認(rèn):
—
語(yǔ)境:
http旧乞,服務(wù)器蔚润,位置
在$fastcgi_script_name變量的值中設(shè)置一個(gè)文件名,該文件名將附加在以斜杠結(jié)尾的URI后面尺栖。例如嫡纠,使用這些設(shè)置
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
和“ /page.php”請(qǐng)求,SCRIPT_FILENAME參數(shù)將等于“ /home/www/scripts/php/page.php”延赌,并且“ /”請(qǐng)求將等于“ /home/www/scripts/php/index.php”除盏。
句法:
fastcgi_intercept_errors開啟| 關(guān)閉;
默認(rèn):
fastcgi_intercept_errors關(guān)閉;
語(yǔ)境:
http,服務(wù)器挫以,位置
確定FastCGI服務(wù)器對(duì)代碼大于或等于300的響應(yīng)是否應(yīng)傳遞給客戶端者蠕,或者是否被攔截并重定向到nginx以便使用error_page指令進(jìn)行處理。
句法:
fastcgi_keep_conn 開啟 | 關(guān)閉;
默認(rèn):
fastcgi_keep_conn關(guān)閉;
語(yǔ)境:
http掐松,服務(wù)器踱侣,位置
默認(rèn)情況下,F(xiàn)astCGI服務(wù)器將在發(fā)送響應(yīng)后立即關(guān)閉連接甩栈。 但是泻仙,如果此指令設(shè)置為打開的值,則nginx將指示FastCGI服務(wù)器保持連接處于打開狀態(tài)量没。 這對(duì)保持FastCGI服務(wù)器正常運(yùn)行的連接尤為重要玉转。
句法:
fastcgi_limit_rate;
默認(rèn):
fastcgi_limit_rate 0;
語(yǔ)境:
http,服務(wù)器殴蹄,位置
限制讀取FastCGI服務(wù)器響應(yīng)的速度究抓。在rate被以每秒字節(jié)數(shù)指定。零值禁用速率限制袭灯。該限制是根據(jù)請(qǐng)求設(shè)置的刺下,因此如果nginx同時(shí)打開到FastCFI服務(wù)器的兩個(gè)連接,則整體速率將是指定限制的兩倍稽荧。該限制僅在啟用對(duì)來自FastCGI服務(wù)器的響應(yīng)的緩沖時(shí)起作用橘茉。
句法:
fastcgi_max_temp_file_size大小;
默認(rèn):
fastcgi_max_temp_file_size 1024m;
語(yǔ)境:
http,服務(wù)器,位置
當(dāng)啟用對(duì)來自FastCGI服務(wù)器的響應(yīng)的緩沖并且整個(gè)響應(yīng)不適合由fastcgi_buffer_size和fastcgi_buffers指令設(shè)置的緩沖區(qū)時(shí)畅卓,響應(yīng)的一部分可以保存到臨時(shí)文件擅腰。該指令設(shè)置size臨時(shí)文件的最大值。一次寫入臨時(shí)文件的數(shù)據(jù)大小由fastcgi_temp_file_write_size指令設(shè)置翁潘。
零值禁用緩沖對(duì)臨時(shí)文件的響應(yīng)趁冈。
此限制不適用于將緩存或存儲(chǔ)在磁盤上的響應(yīng)。
句法:
fastcgi_next_upstream error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off ...;
默認(rèn):
fastcgi_next_upstream錯(cuò)誤超時(shí);
語(yǔ)境:
http拜马,服務(wù)器渗勘,位置
指定在哪些情況下請(qǐng)求應(yīng)傳遞給下一臺(tái)服務(wù)器:
error在與服務(wù)器建立連接,傳遞請(qǐng)求或讀取響應(yīng)頭時(shí)發(fā)生錯(cuò)誤; timeout在與服務(wù)器建立連接俩莽,傳遞請(qǐng)求或讀取響應(yīng)頭時(shí)發(fā)生超時(shí); invalid_header服務(wù)器返回了空的或無效的響應(yīng); http_500服務(wù)器用代碼500返回響應(yīng); http_503服務(wù)器用代碼503返回響應(yīng); http_403服務(wù)器用代碼403返回響應(yīng); http_404服務(wù)器用代碼404返回了響應(yīng); http_429一臺(tái)服務(wù)器返回了代碼為429(1.11.13)的響應(yīng); non_idempotent通常旺坠,具有請(qǐng)求非冪等方法(POST,LOCK扮超,PATCH)如果請(qǐng)求已發(fā)送到上游服務(wù)器(1.9.13)价淌,則不會(huì)傳遞到下一個(gè)服務(wù)器; 使這個(gè)選項(xiàng)明確允許重試這樣的請(qǐng)求; off禁用將請(qǐng)求傳遞給下一個(gè)服務(wù)器。
人們應(yīng)該記住瞒津,只有在沒有任何內(nèi)容發(fā)送給客戶端的情況下,才能將請(qǐng)求傳遞到下一個(gè)服務(wù)器括尸。也就是說巷蚪,如果在響應(yīng)傳輸過程中發(fā)生錯(cuò)誤或超時(shí),修復(fù)這是不可能的濒翻。
該指令還定義了與服務(wù)器進(jìn)行通信的不成功嘗試屁柏。的情況下error,timeout并invalid_header始終被認(rèn)為不成功的嘗試有送,即使在該指令中沒有指定他們淌喻。只有在指令中指定的情況下http_500,雀摘,http_503和http_429被視為不成功的情況裸删。這些案件http_403和http_404從未被視為不成功的嘗試。
將請(qǐng)求傳遞給下一臺(tái)服務(wù)器可能受到嘗試次數(shù)和時(shí)間的限制阵赠。
句法:
fastcgi_next_upstream_timeout時(shí)間;
默認(rèn):
fastcgi_next_upstream_timeout 0;
語(yǔ)境:
http涯塔,服務(wù)器,位置
限制請(qǐng)求可以傳遞到下一個(gè)服務(wù)器的時(shí)間清蚀。該0值將關(guān)閉此限制匕荸。
句法:
fastcgi_next_upstream_tries號(hào);
默認(rèn):
fastcgi_next_upstream_tries 0;
語(yǔ)境:
http,服務(wù)器枷邪,位置
限制將請(qǐng)求傳遞到下一個(gè)服務(wù)器的可能嘗試次數(shù)榛搔。該0值將關(guān)閉此限制。
句法:
fastcgi_no_cache string ...;
默認(rèn):
—
語(yǔ)境:
http,服務(wù)器践惑,位置
定義響應(yīng)不會(huì)保存到緩存的條件腹泌。如果字符串參數(shù)中至少有一個(gè)值不為空且不等于“0”,則不會(huì)保存響應(yīng):
fastcgi_no_cache arg_nocache
http_pragma $http_authorization;
可以與fastcgi_cache_bypass指令一起使用童本。
句法:
fastcgi_param參數(shù)值if_not_empty;
默認(rèn):
—
語(yǔ)境:
http真屯,服務(wù)器,位置
設(shè)置一個(gè)parameter應(yīng)該傳遞給FastCGI服務(wù)器的應(yīng)用程序穷娱。該value可以包含文本绑蔫,變量,他們的組合泵额。當(dāng)且僅當(dāng)沒有fastcgi_param在當(dāng)前級(jí)別上定義的指令時(shí)配深,這些指令才從前一級(jí)繼承。
以下示例顯示了PHP的最低必需設(shè)置:
fastcgi_param SCRIPT_FILENAME /home/www/scripts/phpquery_string;
該SCRIPT_FILENAME參數(shù)在PHP中用于確定腳本名稱嫁盲,并且該QUERY_STRING參數(shù)用于傳遞請(qǐng)求參數(shù)篓叶。
對(duì)于處理POST請(qǐng)求的腳本,還需要以下三個(gè)參數(shù):
fastcgi_param REQUEST_METHOD content_type;
fastcgi_param CONTENT_LENGTH $content_length;
如果PHP是使用--enable-force-cgi-redirect配置參數(shù)構(gòu)建的羞秤,則REDIRECT_STATUS還應(yīng)該使用值“200”傳遞該參數(shù):
fastcgi_param REDIRECT_STATUS 200;
如果指令是用if_not_empty(1.1.11)指定的缸托,那么這個(gè)參數(shù)不會(huì)被傳遞給服務(wù)器,直到它的值不為空:
fastcgi_param HTTPS $https if_not_empty;
句法:
fastcgi_pass地址;
默認(rèn):
—
語(yǔ)境:
位置瘾蛋,如果在指定位置
設(shè)置FastCGI服務(wù)器的地址俐镐。該地址可以指定為域名或IP地址,以及端口:
fastcgi_pass localhost:9000;
或者作為UNIX域套接字路徑:
fastcgi_pass unix:/tmp/fastcgi.socket;
如果域名解析為多個(gè)地址哺哼,則所有這些地址都將以循環(huán)方式使用佩抹。另外,地址可以被指定為服務(wù)器組取董。
參數(shù)值可以包含變量棍苹。在這種情況下,如果地址被指定為域名茵汰,則在所描述的服務(wù)器組中搜索名稱枢里,并且如果未找到,則使用解析器來確定经窖。
句法:
fastcgi_pass_header字段;
默認(rèn):
—
語(yǔ)境:
http坡垫,服務(wù)器,位置
允許從FastCGI服務(wù)器向客戶端傳遞否則禁用的頭字段画侣。
句法:
fastcgi_pass_request_body開啟|關(guān)閉;
默認(rèn):
fastcgi_pass_request_body 開啟;
語(yǔ)境:
http冰悠,服務(wù)器,位置
指示是否將原始請(qǐng)求主體傳遞給FastCGI服務(wù)器配乱。另請(qǐng)參閱fastcgi_pass_request_headers指令溉卓。
句法:
fastcgi_pass_request_headers開啟| 關(guān)閉;
默認(rèn):
fastcgi_pass_request_headers開啟;
語(yǔ)境:
http皮迟,服務(wù)器,位置
指示原始請(qǐng)求的頭字段是否傳遞給FastCGI服務(wù)器桑寨。另請(qǐng)參閱fastcgi_pass_request_body指令伏尼。
句法:
fastcgi_read_timeout時(shí)間;
默認(rèn):
fastcgi_read_timeout 60s;
語(yǔ)境:
http,服務(wù)器尉尾,位置
定義從FastCGI服務(wù)器讀取響應(yīng)的超時(shí)時(shí)間爆阶。超時(shí)只在兩次連續(xù)的讀操作之間設(shè)置,而不是用于傳輸整個(gè)響應(yīng)沙咏。如果FastCGI服務(wù)器在此時(shí)間內(nèi)沒有傳輸任何內(nèi)容辨图,則連接將被關(guān)閉。
句法:
fastcgi_request_buffering 開啟|關(guān)閉;
默認(rèn):
fastcgi_request_buffering 開啟;
語(yǔ)境:
http肢藐,服務(wù)器故河,位置
啟用或禁用客戶端請(qǐng)求主體的緩沖。
啟用緩沖時(shí)吆豹,在將請(qǐng)求發(fā)送到FastCGI服務(wù)器之前鱼的,將從客戶端讀取整個(gè)請(qǐng)求體。
當(dāng)緩沖被禁用時(shí)痘煤,請(qǐng)求主體在收到時(shí)立即發(fā)送到FastCGI服務(wù)器凑阶。在這種情況下,如果nginx已經(jīng)開始發(fā)送請(qǐng)求主體衷快,則請(qǐng)求不能傳遞到下一個(gè)服務(wù)器晌砾。
句法:
fastcgi_send_lowat大小;
默認(rèn):
fastcgi_send_lowat 0;
語(yǔ)境:
http,服務(wù)器烦磁,位置
如果指令設(shè)置為非零值,則nginx將嘗試通過使用NOTE_LOWATkqueue方法的標(biāo)志或SO_SNDLOWAT套接字選項(xiàng)與指定的最小化傳出連接到FastCGI服務(wù)器的發(fā)送操作數(shù)size哼勇。
該指令在Linux都伪,Solaris和Windows上被忽略。
句法:
fastcgi_send_timeout時(shí)間;
默認(rèn):
fastcgi_send_timeout 60s;
語(yǔ)境:
http积担,服務(wù)器陨晶,位置
設(shè)置向FastCGI服務(wù)器發(fā)送請(qǐng)求的超時(shí)時(shí)間。超時(shí)只在兩次連續(xù)寫入操作之間設(shè)置帝璧,而不是用于傳輸整個(gè)請(qǐng)求先誉。如果FastCGI服務(wù)器在此時(shí)間內(nèi)沒有收到任何內(nèi)容,則連接將關(guān)閉的烁。
句法:
fastcgi_split_path_info正則表達(dá)式;
默認(rèn):
—
語(yǔ)境:
位置
定義一個(gè)捕獲fastcgi_script_name變量的值,第二個(gè)成為$fastcgi_path_info變量的值渴庆。例如铃芦,使用這些設(shè)置
location ~ ^(.+.php)(.*);
fastcgi_param SCRIPT_FILENAME /path/to/phpfastcgi_path_info;
“ /show.php/article/0001”請(qǐng)求雅镊,SCRIPT_FILENAME參數(shù)將等于“ /path/to/php/show.php”,PATH_INFO參數(shù)將等于“ /article/0001”刃滓。
句法:
fastcgi_store開啟| 關(guān)閉| 串;
默認(rèn):
fastcgi_store關(guān)閉;
語(yǔ)境:
http仁烹,服務(wù)器,位置
啟用將文件保存到磁盤咧虎。該on參數(shù)保存具有與指令別名或根對(duì)應(yīng)的路徑的文件卓缰。該off參數(shù)禁用保存文件。另外砰诵,文件名可以使用stringwith變量顯式設(shè)置:
fastcgi_store /data/www$original_uri;
文件的修改時(shí)間根據(jù)收到的“Last-Modified”響應(yīng)頭字段設(shè)置征唬。首先將響應(yīng)寫入臨時(shí)文件,然后重命名該文件胧砰。從0.8.9版開始鳍鸵,臨時(shí)文件和持久性存儲(chǔ)可以放在不同的文件系統(tǒng)上。但是尉间,請(qǐng)注意偿乖,在這種情況下,文件將跨兩個(gè)文件系統(tǒng)復(fù)制哲嘲,而不是廉價(jià)的重命名操作贪薪。因此建議,對(duì)于任何給定位置眠副,保存的文件和由fastcgi_temp_path指令設(shè)置的暫存臨時(shí)文件的目錄都放在同一文件系統(tǒng)上画切。
該指令可用于創(chuàng)建靜態(tài)不可更改文件的本地副本,例如:
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用戶:權(quán)限...;
默認(rèn):
fastcgi_store_access用戶:rw;
語(yǔ)境:
http囱怕,服務(wù)器霍弹,位置
為新創(chuàng)建的文件和目錄設(shè)置訪問權(quán)限,例如:
fastcgi_store_access user:rw group:rw all:r;
如果指定了任何group或all訪問權(quán)限娃弓,則user可以省略權(quán)限:
fastcgi_store_access group:rw all:r;
句法:
fastcgi_temp_file_write_size大小;
默認(rèn):
fastcgi_temp_file_write_size 8k | 16k;
語(yǔ)境:
http典格,服務(wù)器,位置
size一旦啟用了從FastCGI服務(wù)器到臨時(shí)文件的緩存響應(yīng)台丛,就一次限制寫入臨時(shí)文件的數(shù)據(jù)耍缴。默認(rèn)情況下,size由fastcgi_buffer_size和fastcgi_buffers指令設(shè)置的兩個(gè)緩沖區(qū)限制挽霉。臨時(shí)文件的最大大小由fastcgi_max_temp_file_size指令設(shè)置防嗡。
句法:
fastcgi_temp_path路徑 [level1 [level2 level3]];
默認(rèn):
fastcgi_temp_path fastcgi_temp;
語(yǔ)境:
http,服務(wù)器侠坎,位置
定義一個(gè)目錄蚁趁,用于存儲(chǔ)從FastCGI服務(wù)器接收到的數(shù)據(jù)的臨時(shí)文件。指定目錄下最多可以使用三級(jí)子目錄層次結(jié)構(gòu)实胸。例如荣德,在以下配置中
fastcgi_temp_path /spool/nginx/fastcgi_temp 1 2;
臨時(shí)文件可能如下所示:
/spool/nginx/fastcgi_temp/7/45/00000123457
另請(qǐng)參閱use_temp_pathfastcgi_cache_path指令的參數(shù)闷煤。
傳遞給FastCGI服務(wù)器的參數(shù)
HTTP請(qǐng)求頭字段作為參數(shù)傳遞給FastCGI服務(wù)器。在作為FastCGI服務(wù)器運(yùn)行的應(yīng)用程序和腳本中涮瞻,這些參數(shù)通常作為環(huán)境變量提供鲤拿。例如,“User-Agent”標(biāo)題字段作為HTTP_USER_AGENT參數(shù)傳遞署咽。除HTTP請(qǐng)求頭字段外近顷,還可以使用fastcgi_param指令傳遞任意參數(shù)。
嵌入式變量
該ngx_http_fastcgi_module模塊支持可用于使用fastcgi_param指令設(shè)置參數(shù)的嵌入式變量:
$fastcgi_script_name請(qǐng)求URI宁否,或者窒升,如果URI以斜杠結(jié)尾,則請(qǐng)求URI的索引文件名稱由fastcgi_index指令配置慕匠。該變量可用于設(shè)置SCRIPT_FILENAME和PATH_TRANSLATED確定PHP中腳本名稱的參數(shù)饱须。例如,對(duì)于/info/具有以下指令的“ ”請(qǐng)求
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
該SCRIPT_FILENAME參數(shù)將等同于“ /home/www/scripts/php/info/index.php”台谊。
當(dāng)使用fastcgi_split_path_info指令時(shí)蓉媳,$fastcgi_script_name變量等于指令設(shè)置的第一個(gè)捕獲的值。
$fastcgi_path_info由fastcgi_split_path_info指令設(shè)置的第二個(gè)捕獲的值锅铅。這個(gè)變量可以用來設(shè)置PATH_INFO參數(shù)酪呻。