NGINX 配置超时时间
一、啥時候用到
前些天發(fā)現(xiàn)了一個巨牛的人工智能學習網(wǎng)站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉(zhuǎn)到教程。
???????用來設(shè)置請求資源和服務(wù)器返回的時間,保證一個請求占用固定時間,超出后報504超時!這樣可以保證一個請求占用過長時間。
二、主要參數(shù)
?
? ? ? 使用nginx服務(wù)器如果遇到timeou情況時可以如下設(shè)置參數(shù),使用fastcgi:
????? ? ?fastcgi_connect_timeout 75; ?鏈接
????? ? ?fastcgi_read_timeout 600; ? 讀取
????? ? ?fastcgi_send_timeout 600; ? 發(fā)請求
? ? ?這兩個選項.
? ? ?????fastcgi_read_timeout是指fastcgi進程向nginx進程發(fā)送response的整個過程的超時時間
? ? ?????fastcgi_send_timeout是指nginx進程向fastcgi進程發(fā)送request的整個過程的超時時間
? ? ?這兩個選項默認都是秒(s),可以手動指定為分鐘(m),小時(h)等
?
三、其他常用參數(shù)以及參數(shù)說明
?
????? ? keepalive_timeout ?600; ? 連接超時時間,1分鐘,具體時間可以根據(jù)請求(例如后臺導入)需要的時間來設(shè)置
????? ? proxy_connect_timeout 600; ? ?1分鐘
????? ? proxy_read_timeout 600; ? ?1分鐘
?
nginx超時配置參數(shù)說明:
keepalive_timeout?
語法 keepalive_timeout timeout [ header_timeout ]
默認值 75s
上下文 http server location
說明 第一個參數(shù)指定了與client的keep-alive連接超時時間。服務(wù)器將會在這個時間后關(guān)閉連接。可選的第二個參數(shù)指定了在響應頭Keep-Alive: timeout=time中的time值。這個頭能夠讓一些瀏覽器主動關(guān)閉連接,這樣服務(wù)器就不必要去關(guān)閉連接了。沒有這個參數(shù),nginx不會發(fā)送Keep-Alive響應頭(盡管并不是由這個頭來決定連接是否“keep-alive”)
兩個參數(shù)的值可并不相同
注意不同瀏覽器怎么處理“keep-alive”頭
MSIE和Opera忽略掉"Keep-Alive: timeout=<N>" header.
MSIE保持連接大約60-65秒,然后發(fā)送TCP RST
Opera永久保持長連接
Mozilla keeps the connection alive for N plus about 1-10 seconds.
Konqueror保持長連接N秒
?
proxy_connect_timeout
語法 proxy_connect_timeout time?
默認值 60s
上下文 http server location
說明 該指令設(shè)置與upstream server的連接超時時間,有必要記住,這個超時不能超過75秒。
這個不是等待后端返回頁面的時間,那是由proxy_read_timeout聲明的。如果你的upstream服務(wù)器起來了,但是hanging住了(例如,沒有足夠的線程處理請求,所以把你的請求放到請求池里稍后處理),那么這個聲明是沒有用的,由于與upstream服務(wù)器的連接已經(jīng)建立了。
?
proxy_read_timeout
語法 proxy_read_timeout time?
默認值 60s
上下文 http server location
說明 該指令設(shè)置與代理服務(wù)器的讀超時時間。它決定了nginx會等待多長時間來獲得請求的響應。這個時間不是獲得整個response的時間,而是兩次reading操作的時間。
?
client_header_timeout
語法 client_header_timeout time
默認值 60s
上下文 http server
說明 指定等待client發(fā)送一個請求頭的超時時間(例如:GET / HTTP/1.1).僅當在一次read中,沒有收到請求頭,才會算成超時。如果在超時時間內(nèi),client沒發(fā)送任何東西,nginx返回HTTP狀態(tài)碼408(“Request timed out”)
?
?
?
client_body_timeout?
語法 client_body_timeout time
默認值 60s
上下文 http server location
說明 該指令設(shè)置請求體(request body)的讀超時時間。僅當在一次readstep中,沒有得到請求體,就會設(shè)為超時。超時后,nginx返回HTTP狀態(tài)碼408(“Request timed out”)
?
lingering_timeout
語法 lingering_timeout time
默認值 5s
上下文 http server location
說明 lingering_close生效后,在關(guān)閉連接前,會檢測是否有用戶發(fā)送的數(shù)據(jù)到達服務(wù)器,如果超過lingering_timeout時間后還沒有數(shù)據(jù)可讀,就直接關(guān)閉連接;否則,必須在讀取完連接緩沖區(qū)上的數(shù)據(jù)并丟棄掉后才會關(guān)閉連接。
?
resolver_timeout
語法 resolver_timeout time?
默認值 30s
上下文 http server location
說明 該指令設(shè)置DNS解析超時時間
?
proxy_send_timeout
語法 proxy_send_timeout time?
默認值 60s
上下文 http server location
說明 這個指定設(shè)置了發(fā)送請求給upstream服務(wù)器的超時時間。超時設(shè)置不是為了整個發(fā)送期間,而是在兩次write操作期間。如果超時后,upstream沒有收到新的數(shù)據(jù),nginx會關(guān)閉連接
?
proxy_upstream_fail_timeout(fail_timeout)
語法 server address [fail_timeout=30s]
默認值 10s
上下文 upstream
說明 Upstream模塊下 server指令的參數(shù),設(shè)置了某一個upstream后端失敗了指定次數(shù)(max_fails)后,該后端不可操作的時間,默認為10秒
?
四、其他說明
?
? ?針對這兩個常用參數(shù),還可以設(shè)置一定的規(guī)則,例如單獨針對后臺,設(shè)置讀取超時時間。規(guī)則可以類似這:/admin/*
具體可參考這個:http://www.cnblogs.com/discuss/articles/1866851.html?
?
?
?
五、nginx基本配置與參數(shù)說明
?
? ?http://my.oschina.net/xsh1208/blog/492374?
?
?
轉(zhuǎn)自:https://my.oschina.net/xsh1208/blog/199674
總結(jié)
以上是生活随笔為你收集整理的NGINX 配置超时时间的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 中使用help()命令后如
- 下一篇: Postman用法说明