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