Nginx上的各類超時時間可以分為如下兩類:
一、Nginx作為服務端
client_header_timeout :用來設定客戶端請求頭部的讀取超時時間。Nginx 在接收客戶端發送的請求頭部信息時,如果超出這個時間還沒接收完整,就判定為超時。
client_body_timeout:用于設置客戶端請求主體(比如提交 POST 數據時發送的內容主體)的讀取超時時間。在該時間內如果沒能完整讀取客戶端發送過來的請求主體內容,Nginx 將會返回相應的超時錯誤給客戶端。
keepalive_timeout:用于設置與客戶端保持連接的超時時間,也就是一個 HTTP 連接在空閑狀態下能夠維持的最長時間。超過這個時間,Nginx 會主動關閉這個空閑的連接,以釋放服務器資源。
send_timeout:設置 Nginx 響應客戶端請求時,向客戶端發送響應數據的超時時間。如果在這個時間內沒能將數據全部發送給客戶端,會被視為發送超時。
二、Nginx作為客戶端
proxy_connect_timeout:如果 Nginx 作為反向代理服務器,該指令用于設置其與后端真實服務器建立連接的超時時間。在規定時間內若沒能成功連接到后端服務器,就會返回連接超時的錯誤。
proxy_send_timeout:在 Nginx 作為反向代理時,設定其向后端服務器發送請求數據的超時時間,超出此時間沒能發送完數據就視為超時。
proxy_read_timeout:同樣在 Nginx 作為反向代理場景下,用于設置 Nginx 從后端服務器讀取響應數據的超時時間,若超過該時間還未讀完數據,就判定為超時。
在實際業務應用中,需要根據服務器的性能、網絡環境以及具體業務的特點等因素,合理地對這些超時時間進行調整,以優化 Nginx 服務器的運行效率和服務質量。