詳解Nginx服務(wù)器中配置超時(shí)時(shí)間的方法
一、啥時(shí)候用到
用來(lái)設(shè)置請(qǐng)求資源和服務(wù)器返回的時(shí)間,保證一個(gè)請(qǐng)求占用固定時(shí)間,超出后報(bào)504超時(shí)!這樣可以保證一個(gè)請(qǐng)求占用過(guò)長(zhǎng)時(shí)間。
二、主要參數(shù)
使用nginx服務(wù)器如果遇到timeou情況時(shí)可以如下設(shè)置參數(shù),使用fastcgi:
fastcgi_connect_timeout 75; 鏈接
fastcgi_read_timeout 600; 讀取
fastcgi_send_timeout 600; 發(fā)請(qǐng)求
這兩個(gè)選項(xiàng).
fastcgi_read_timeout是指fastcgi進(jìn)程向nginx進(jìn)程發(fā)送response的整個(gè)過(guò)程的超時(shí)時(shí)間
fastcgi_send_timeout是指nginx進(jìn)程向fastcgi進(jìn)程發(fā)送request的整個(gè)過(guò)程的超時(shí)時(shí)間
這兩個(gè)選項(xiàng)默認(rèn)都是秒(s),可以手動(dòng)指定為分鐘(m),小時(shí)(h)等
三、其他常用參數(shù)以及參數(shù)說(shuō)明
keepalive_timeout 600; 連接超時(shí)時(shí)間,1分鐘,具體時(shí)間可以根據(jù)請(qǐng)求(例如后臺(tái)導(dǎo)入)需要的時(shí)間來(lái)設(shè)置
proxy_connect_timeout 600; 1分鐘
proxy_read_timeout 600; 1分鐘
nginx超時(shí)配置參數(shù)說(shuō)明:
keepalive_timeout
語(yǔ)法 keepalive_timeout timeout [ header_timeout ]
默認(rèn)值 75s
上下文 http server location
說(shuō)明 第一個(gè)參數(shù)指定了與client的keep-alive連接超時(shí)時(shí)間。服務(wù)器將會(huì)在這個(gè)時(shí)間后關(guān)閉連接??蛇x的第二個(gè)參數(shù)指定了在響應(yīng)頭Keep-Alive: timeout=time中的time值。這個(gè)頭能夠讓一些瀏覽器主動(dòng)關(guān)閉連接,這樣服務(wù)器就不必要去關(guān)閉連接了。沒(méi)有這個(gè)參數(shù),nginx不會(huì)發(fā)送Keep-Alive響應(yīng)頭(盡管并不是由這個(gè)頭來(lái)決定連接是否“keep-alive”)
兩個(gè)參數(shù)的值可并不相同
注意不同瀏覽器怎么處理“keep-alive”頭
MSIE和Opera忽略掉"Keep-Alive: timeout=<N>" header.
MSIE保持連接大約60-65秒,然后發(fā)送TCP RST
Opera永久保持長(zhǎng)連接
Mozilla keeps the connection alive for N plus about 1-10 seconds.
Konqueror保持長(zhǎng)連接N秒
proxy_connect_timeout
語(yǔ)法 proxy_connect_timeout time
默認(rèn)值 60s
上下文 http server location
說(shuō)明 該指令設(shè)置與upstream server的連接超時(shí)時(shí)間,有必要記住,這個(gè)超時(shí)不能超過(guò)75秒。
這個(gè)不是等待后端返回頁(yè)面的時(shí)間,那是由proxy_read_timeout聲明的。如果你的upstream服務(wù)器起來(lái)了,但是hanging住了(例如,沒(méi)有足夠的線程處理請(qǐng)求,所以把你的請(qǐng)求放到請(qǐng)求池里稍后處理),那么這個(gè)聲明是沒(méi)有用的,由于與upstream服務(wù)器的連接已經(jīng)建立了。
proxy_read_timeout
語(yǔ)法 proxy_read_timeout time
默認(rèn)值 60s
上下文 http server location
說(shuō)明 該指令設(shè)置與代理服務(wù)器的讀超時(shí)時(shí)間。它決定了nginx會(huì)等待多長(zhǎng)時(shí)間來(lái)獲得請(qǐng)求的響應(yīng)。這個(gè)時(shí)間不是獲得整個(gè)response的時(shí)間,而是兩次reading操作的時(shí)間。
client_header_timeout
語(yǔ)法 client_header_timeout time
默認(rèn)值 60s
上下文 http server
說(shuō)明 指定等待client發(fā)送一個(gè)請(qǐng)求頭的超時(shí)時(shí)間(例如:GET / HTTP/1.1).僅當(dāng)在一次read中,沒(méi)有收到請(qǐng)求頭,才會(huì)算成超時(shí)。如果在超時(shí)時(shí)間內(nèi),client沒(méi)發(fā)送任何東西,nginx返回HTTP狀態(tài)碼408(“Request timed out”)
client_body_timeout
語(yǔ)法 client_body_timeout time
默認(rèn)值 60s
上下文 http server location
說(shuō)明 該指令設(shè)置請(qǐng)求體(request body)的讀超時(shí)時(shí)間。僅當(dāng)在一次readstep中,沒(méi)有得到請(qǐng)求體,就會(huì)設(shè)為超時(shí)。超時(shí)后,nginx返回HTTP狀態(tài)碼408(“Request timed out”)
lingering_timeout
語(yǔ)法 lingering_timeout time
默認(rèn)值 5s
上下文 http server location
說(shuō)明 lingering_close生效后,在關(guān)閉連接前,會(huì)檢測(cè)是否有用戶發(fā)送的數(shù)據(jù)到達(dá)服務(wù)器,如果超過(guò)lingering_timeout時(shí)間后還沒(méi)有數(shù)據(jù)可讀,就直接關(guān)閉連接;否則,必須在讀取完連接緩沖區(qū)上的數(shù)據(jù)并丟棄掉后才會(huì)關(guān)閉連接。
resolver_timeout
語(yǔ)法 resolver_timeout time
默認(rèn)值 30s
上下文 http server location
說(shuō)明 該指令設(shè)置DNS解析超時(shí)時(shí)間
proxy_send_timeout
語(yǔ)法 proxy_send_timeout time
默認(rèn)值 60s
上下文 http server location
說(shuō)明 這個(gè)指定設(shè)置了發(fā)送請(qǐng)求給upstream服務(wù)器的超時(shí)時(shí)間。超時(shí)設(shè)置不是為了整個(gè)發(fā)送期間,而是在兩次write操作期間。如果超時(shí)后,upstream沒(méi)有收到新的數(shù)據(jù),nginx會(huì)關(guān)閉連接
proxy_upstream_fail_timeout(fail_timeout)
語(yǔ)法 server address [fail_timeout=30s]
默認(rèn)值 10s
上下文 upstream
說(shuō)明 Upstream模塊下 server指令的參數(shù),設(shè)置了某一個(gè)upstream后端失敗了指定次數(shù)(max_fails)后,該后端不可操作的時(shí)間,默認(rèn)為10秒
四、實(shí)例
這里來(lái)看一個(gè)把Nginx的超時(shí)時(shí)間上調(diào)的例子。
看看時(shí)間是否符合要求,在nginx.config里面的三個(gè)參數(shù):
- fastcgi_connect_timeout 300;
- fastcgi_send_timeout 300;
- fastcgi_read_timeout 300;
以上的單位是秒。
如果使用了Nginx的代理,可以在塊里加上:
proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s;
變成:
location /foo { proxy_pass http://xxx.xxx.xxx.xxx:8080/foo; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; access_log /var/log/nginx/access.foo.log main; error_log /var/log/nginx/error.foo.log; }
相關(guān)文章
nginx使用ssl模塊配置支持HTTPS訪問(wèn)的方法
這篇文章主要介紹了nginx使用ssl模塊配置支持HTTPS訪問(wèn)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06nginx多域名轉(zhuǎn)發(fā)的實(shí)現(xiàn)
本文主要介紹了nginx多域名轉(zhuǎn)發(fā)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Nginx實(shí)現(xiàn)https網(wǎng)站配置代碼實(shí)例
這篇文章主要介紹了Nginx實(shí)現(xiàn)https網(wǎng)站配置代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11Nginx服務(wù)器中配置404錯(cuò)誤頁(yè)面時(shí)一些值得注意的地方
這篇文章主要介紹了Nginx服務(wù)器中配置404錯(cuò)誤頁(yè)面時(shí)一些值得注意的地方,包括隱藏Nginx出錯(cuò)頁(yè)面及Header上的版本號(hào)的安全方法,需要的朋友可以參考下2016-01-01nginx反向代理導(dǎo)致session失效的問(wèn)題解決
這篇文章主要介紹了nginx反向代理導(dǎo)致session失效的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Nginx+iptables屏蔽訪問(wèn)Web頁(yè)面過(guò)于頻繁的IP(防DDOS,惡意訪問(wèn),采集器)
通過(guò)分析nginx的日志來(lái)過(guò)濾出訪問(wèn)過(guò)于頻繁的IP地址,然后添加到nginx的blockip.conf,并重啟nginx.2010-11-11