Nginx網(wǎng)絡(luò)連接配置項有:1、讀取HTTP頭部的超時時間;2、讀取HTTP包體的超時時間;3、發(fā)送響應(yīng)的超時時間;4、重置超時連接選項。
Nginx網(wǎng)絡(luò)連接配置項有:
1、讀取HTTP頭部的超時時間
語法:
client_header_timeout time(默認(rèn)單位:秒);
默認(rèn):
client_header_timeout 60;
配置塊:http、server、location
客戶端與服務(wù)器建立連接后將開始接收HTTP頭部,在這個過程中,如果在一個時間間隔(超時時間)內(nèi)沒有讀取到客戶端發(fā)來的字節(jié),則認(rèn)為超時,并向客戶端返回408 ("Request timed out")響應(yīng)。
推薦教程:nginx快速入門教程
2、讀取HTTP包體的超時時間
語法:
client_body_timeout time(默認(rèn)單位:秒);
默認(rèn):
client_body_timeout 60;
配置塊:http、server、location
此配置項與client_header_timeout相似,只是這個超時時間只在讀取HTTP包體時才有效。
3、發(fā)送響應(yīng)的超時時間
語法:
send_timeout time;
默認(rèn):
send_timeout 60;
配置塊:http、server、location
這個超時時間是發(fā)送響應(yīng)的超時時間,即Nginx服務(wù)器向客戶端發(fā)送了數(shù)據(jù)包,但客戶端一直沒有去接收這個數(shù)據(jù)包。如果某個連接超過send_timeout定義的超時時間,那么Nginx將會關(guān)閉這個連接。
4、 重置超時連接選項
語法:
reset_timeout_connection on | off;
默認(rèn):
reset_timeout_connection off;
配置塊:http、server、location
連接超時后將通過向客戶端發(fā)送RST包來直接重置連接。這個選項打開后,Nginx會在某個連接超時后,不是使用正常情形下的四次握手關(guān)閉TCP連接,而是直接向用戶發(fā)送RST重置包,不再等待用戶的應(yīng)答,直接釋放Nginx服務(wù)器上關(guān)于這個套接字使用的所有緩存(如TCP滑動窗口)。相比正常的關(guān)閉方式,它使得服務(wù)器避免產(chǎn)生許多處于FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT狀態(tài)的TCP連接。
注意,使用RST重置包關(guān)閉連接會帶來一些問題,默認(rèn)情況下不會開啟。
5、lingering_close
語法:
lingering_close off | on | always;
默認(rèn):
lingering_close on;
配置塊:http、server、location
該配置控制Nginx關(guān)閉用戶連接的方式。always表示關(guān)閉用戶連接前必須無條件地處理連接上所有用戶發(fā)送的數(shù)據(jù)。off表示關(guān)閉連接時完全不管連接上是否已經(jīng)有準(zhǔn)備就緒的來自用戶的數(shù)據(jù)。on是中間值,一般情況下在關(guān)閉連接前都會處理連接上的用戶發(fā)送的數(shù)據(jù),除了有些情況下在業(yè)務(wù)上認(rèn)定這之后的數(shù)據(jù)是不必要的。
6、lingering_time
語法:
lingering_time time;
默認(rèn):
lingering_time 30s;
配置塊:http、server、location
lingering_close啟用后,這個配置項對于上傳大文件很有用。上文講過,當(dāng)用戶請求的Content-Length大于max_client_body_size配置時,Nginx服務(wù)會立刻向用戶發(fā)送413(Request entity too large)響應(yīng)。但是,很多客戶端可能不管413返回值,仍然持續(xù)不斷地上傳HTTP body,這時,經(jīng)過了lingering_time設(shè)置的時間后,Nginx將不管用戶是否仍在上傳,都會把連接關(guān)閉掉。
7、 lingering_timeout
語法:
lingering_timeout time;
默認(rèn):
lingering_timeout 5s;
配置塊:http、server、location
lingering_close生效后,在關(guān)閉連接前,會檢測是否有用戶發(fā)送的數(shù)據(jù)到達(dá)服務(wù)器,如果超過lingering_timeout時間后還沒有數(shù)據(jù)可讀,就直接關(guān)閉連接;否則,必須在讀取完連接緩沖區(qū)上的數(shù)據(jù)并丟棄掉后才會關(guān)閉連接。
8、對某些瀏覽器禁用keepalive功能
語法:
keepalive_disable [ msie6 | safari | none ]...
默認(rèn):
keepalive_disable msie6 safari
配置塊:http、server、location
HTTP請求中的keepalive功能是為了讓多個請求復(fù)用一個HTTP長連接,這個功能對服務(wù)器的性能提高是很有幫助的。但有些瀏覽器,如IE 6和Safari,它們對于使用keepalive功能的POST請求處理有功能性問題。因此,針對IE 6及其早期版本、Safari瀏覽器默認(rèn)是禁用keepalive功能的。
8、 keepalive
超時時間
語法:
keepalive_timeout time(默認(rèn)單位:秒);
默認(rèn):
keepalive_timeout 75;
配置塊:http、server、location
一個keepalive 連接在閑置超過一定時間后(默認(rèn)的是75秒),服務(wù)器和瀏覽器都會去關(guān)閉這個連接。當(dāng)然,keepalive_timeout配置項是用來約束Nginx服務(wù)器的,Nginx也會按照規(guī)范把這個時間傳給瀏覽器,但每個瀏覽器對待keepalive的策略有可能是不同的。
10、一個keepalive
長連接上允許承載的請求最大數(shù)
語法:
keepalive_requests n;
默認(rèn):
keepalive_requests 100;
配置塊:http、server、location
一個keepalive連接上默認(rèn)最多只能發(fā)送100個請求。
11、 tcp_nodelay
語法:
tcp_nodelay on | off;
默認(rèn):
tcp_nodelay on;
配置塊:http、server、location
確定對keepalive連接是否使用TCP_NODELAY選項。
12、tcp_nopush
語法:
tcp_nopush on | off;
默認(rèn):
tcp_nopush off;
配置塊:http、server、location
在打開sendfile選項時,確定是否開啟FreeBSD系統(tǒng)上的TCP_NOPUSH
或Linux系統(tǒng)上的TCP_CORK功能。打開tcp_nopush后,將會在發(fā)送響應(yīng)時把整個響應(yīng)包頭放到一個TCP包中發(fā)送。