1. 程式人生 > 實用技巧 >nginx 超時相關配置

nginx 超時相關配置

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;