Nginx网络连接配置
本文記錄Nginx中網(wǎng)絡(luò)連接的設(shè)置配置項(xiàng)。
1)讀取HTTP頭部超時(shí)時(shí)間
語法:client_header_timeout time(默認(rèn)單位:秒);
默認(rèn):client_header_timeout 60;
配置塊: http、server、location
在與客戶端建立連接之后,將開始獲取HTTP頭部,如果在配置的時(shí)間之內(nèi)沒有讀取到客戶端發(fā)來的字節(jié),就會(huì)返回超時(shí)碼(408-Request timed out)。
2)讀取HTTP包體超時(shí)時(shí)間
語法:client_body_timeout time(默認(rèn)單位:秒);
默認(rèn):client_body_timeout 60;
配置塊: http、server、location
在與客戶端建立連接之后,如果在配置的時(shí)間之內(nèi)沒有讀取到客戶端發(fā)來的HTTP包體的字節(jié),就會(huì)返回超時(shí)碼(408-Request timed out)。
3)響應(yīng)超時(shí)時(shí)間
語法:send_timeout time;
默認(rèn):send_timeout 60;
配置塊:http、server、location
該配置是Nginx發(fā)送響應(yīng)的超時(shí)時(shí)間,即向客戶端發(fā)送了數(shù)據(jù)包之后,客戶端在設(shè)置的超時(shí)時(shí)間之內(nèi)沒有去接受這個(gè)數(shù)據(jù)包,這樣的話Nginx會(huì)關(guān)閉這個(gè)連接。
4)連接超時(shí)重置
語法:reset_timeout_connection on|off;
默認(rèn):reset_timeout_connection off;
配置塊: http、server、location
該配置開啟之后,如果Nginx與客戶端的連接超時(shí),Nginx不會(huì)走正常的四次揮手關(guān)閉TCP連接、釋放資源,而是直接向客戶端發(fā)送RST重置包,直接釋放NGinx服務(wù)器上該套接字的所以緩存,并且不會(huì)等待客戶端的同意。該配置可以有效減少服務(wù)器處于FIN_WAIT1、FIN_WAIT2與TIME_WAIT狀態(tài)下的連接,但是使用Rst重置包關(guān)閉連接會(huì)帶來一些問題,默認(rèn)情況下不開啟。
5)連接關(guān)閉方式
語法:lingering_close off|on|always;
默認(rèn):lingering_close on;
配置塊:server、http、location
該配置決定了Nginx關(guān)閉用戶連接的方式。off表示關(guān)閉連接時(shí),不管連接上是否存在準(zhǔn)備就緒的來自用戶的數(shù)據(jù)。on表示一般情況下關(guān)閉連接前處理連接上用戶發(fā)送的數(shù)據(jù),除非是部分情況下業(yè)務(wù)上認(rèn)為這些數(shù)據(jù)為無用數(shù)據(jù)。always表示關(guān)閉連接之前必須無條件的處理完連接上所有用戶發(fā)送的數(shù)據(jù)。
6)連接時(shí)間
語法:lingering_time time;
默認(rèn):lingering_time 30s;
配置塊: http、server、location
lingering_close啟用之后,該配置對(duì)于上傳大文件很有用,客戶端有時(shí)會(huì)持續(xù)不斷的上傳HTTPbody,這時(shí)超時(shí)設(shè)置的連接時(shí)間之后,Nginx不管用戶是否還在上傳,都會(huì)直接將連接關(guān)閉。
7)連接超時(shí)時(shí)間
語法:lingering_timeout time;
默認(rèn):lingering_timeout 5s;
配置塊: http、server、location
在lingering_close啟用之后,在關(guān)閉連接時(shí),將會(huì)檢測是否有用戶發(fā)送的數(shù)據(jù)到達(dá)服務(wù)器,如果超過設(shè)置的時(shí)間還沒有數(shù)據(jù)的話,Nginx將會(huì)直接關(guān)閉連接,不然的話必須要讀取完連接緩沖區(qū)的數(shù)據(jù)才會(huì)關(guān)閉連接。
8)禁用keepalive功能
語法:keepalive_disable [msie6|safari|none]...
默認(rèn):keepalive_disable msie6 safari;
配置塊:http、server、location
HTTP請(qǐng)求中的keepalive功能是為了請(qǐng)求復(fù)用(多個(gè)請(qǐng)求使用同一個(gè)TCP連接),這樣可以有效的提高服務(wù)器的性能。但是有一些瀏覽器對(duì)于keepalive功能的post請(qǐng)求處理有功能性問題,比如IE6與Safari,所以默認(rèn)禁用了它們的keepalive功能。
9)keepalive超時(shí)時(shí)間
語法:keepalive_timeout time(默認(rèn)單位:秒);
默認(rèn):keepalive_timeout 75;
配置塊:http、server、location
一個(gè)長連接在閑置了一定的時(shí)間之后,服務(wù)器和瀏覽器都會(huì)區(qū)關(guān)閉這個(gè)連接。這個(gè)配置是來設(shè)置Nginx服務(wù)器關(guān)閉連接的超時(shí)時(shí)間的,瀏覽器的話會(huì)有不同的時(shí)間設(shè)置,不歸服務(wù)器管。
10)長連接最大請(qǐng)求數(shù)
語法:keepalive_requests n;
默認(rèn):keepalive_requests 100;
配置塊:http、server、location
一個(gè)長連接上默認(rèn)最多只能發(fā)送100個(gè)請(qǐng)求。
11)tcp_nodelay
語法:tcp_nodelay on|off;
默認(rèn):tcp_nodelay on;
配置塊:http、server、location
確定是否對(duì)長連接使用tcp_nodelay選項(xiàng)。啟動(dòng)TCP_NODELAY,就意味著禁用了Nagle算法(Nagle算法通過減少需要傳輸?shù)臄?shù)據(jù)包,來優(yōu)化網(wǎng)絡(luò)。在內(nèi)核實(shí)現(xiàn)中,數(shù)據(jù)包的發(fā)送和接受會(huì)先做緩存,分別對(duì)應(yīng)于寫緩存和讀緩存。),允許小包的發(fā)送。對(duì)于延時(shí)敏感型,同時(shí)數(shù)據(jù)傳輸量比較小的應(yīng)用,開啟TCP_NODELAY選項(xiàng)無疑是一個(gè)正確的選擇。比如,對(duì)于SSH會(huì)話,用戶在遠(yuǎn)程敲擊鍵盤發(fā)出指令的速度相對(duì)于網(wǎng)絡(luò)帶寬能力來說,絕對(duì)不是在一個(gè)量級(jí)上的,所以數(shù)據(jù)傳輸非常少;而又要求用戶的輸入能夠及時(shí)獲得返回,有較低的延時(shí)。如果開啟了Nagle算法,就很可能出現(xiàn)頻繁的延時(shí),導(dǎo)致用戶體驗(yàn)極差。
12)tcp_nopush
語法:tcp_nopush on|off;
默認(rèn):tcp_nopush off;
配置塊:http、server、location
在打開sendfile選項(xiàng)時(shí),確定是否開啟freebsd系統(tǒng)上的tcp_nopush或linux上tcp_cork功能。打開這個(gè)配置后,將會(huì)在發(fā)送響應(yīng)時(shí)將整個(gè)響應(yīng)包頭放到一個(gè)TCP包中發(fā)送。
總結(jié)
以上是生活随笔為你收集整理的Nginx网络连接配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分區策略與數據傾斜處理策略的區別
- 下一篇: locate命令详解