nginx 超時相關配置
阿新 • • 發佈:2020-12-08
nginx 與超時相關配置
1. 長連結超時 keepalive
- 語法:
keepalive_timeout timeout [ header_timeout ]
- 預設值:75s
- 上下文: http server location
說明:
(1)第一個引數指定了與 client 的 keep-alive 連線超時時間。伺服器將會在這個時間後關閉連線,建議設定為 60s。
(2)可選的第二個引數指定了在響應頭 Keep-Alive: timeout=time中的time值。這個頭能夠讓一些瀏覽器主動關閉連線,這樣伺服器就不必要去關閉連線了。
(3)keepalive_timeout 的值應該大於 client_body_timeout
可以在瀏覽器上通過 connectionId 測試。
2. 客戶端 header 超時 client_header_timeout
- 語法:
client_header_timeout 15s;
- 預設值:60s
客戶端向服務端傳送一個完整的 request header 的超時時間,如果60s內沒有收到完整的 http request header,則為超時。如果客戶端超時,Nginx 返回 HTTP 408(Request Timed Out)。
當 cookie 很大很大時,容易出現。
3. 客戶端 body 超時 client_body_timeout
- 語法:
client_body_timeout 15s;
- 預設值:60s
客戶端向服務端傳送 request body 的超時時間,如果連續的60s內沒有收到客戶端的1個位元組,則表示超時,如果客戶端超時,Nginx 返回 HTTP 408(Request Timed Out)。
4. 向客戶端傳送資料超時 send_timeout
- 語法:
send_timeout 15s;
- 預設值: 60s
send_timeout 指定客戶端的響應超時時間。這個設定指的是在這段時間內,客戶端沒有讀取任何資料,nginx就會關閉連線。
5. 大檔案上傳
有大檔案上傳時,需要指定body的最大值:
client_max_body_size 50m;` # 預設1M
超過這個值會返回 413 狀態碼。
6. 大檔案下載
如果有大檔案下載,建議限制下載速度,否則會導致網站奔潰。
7. nginx 作為反向代理伺服器
通常需要注意以下配置:
- 定義與被代理伺服器建立連線的超時,應該注意,這個超時通常不能超過75秒。
proxy_connect_timeout 60s;
- 設定向被代理伺服器傳輸請求的超時。超時僅在兩個連續的寫操作之間設定,而不用於傳輸整個請求。如果代理伺服器在此期間沒有接收到任何內容,則關閉連線。
proxy_send_timeout 60s;
- 定義從被代理伺服器讀取響應的超時。超時僅在兩個連續的讀取操作之間設定,而不用於傳輸整個響應。如果代理伺服器在此期間沒有傳輸任何內容,則關閉連線。
proxy_read_timeout 60s;