nginx超时设置

源:http://www.cnblogs.com/discuss/articles/1866851.html

评:

proxy_connect_timeout90;

proxy_send_timeout90;

proxy_read_timeout90;

nginx使用proxy模块时,默认的读取超时时间是60s。

1.send_timeout

syntax:send_timeoutthetime

default:send_timeout60

context:http,server,location

Directiveassignsresponsetimeouttoclient.Timeoutisestablishednotonentiretransferofanswer,butonlybetweentwooperationsofreading,ifafterthistimeclientwilltakenothing,thennginxisshuttingdowntheconnection.

2.负载均衡配置时的2个参数:fail_timeout和max_fails

这2个参数一起配合,来控制nginx怎样认为upstream中的某个server是失效的当在fail_timeout的时间内,某个server连接失败了max_fails次,则nginx会认为该server不工作了。同时,在接下来的fail_timeout时间内,nginx不再将请求分发给失效的server。

个人认为,nginx不应该把这2个时间用同一个参数fail_timeout来控制,要是能再增加一个fail_time,来控制接下来的多长时间内,不再使用down掉的server就更好了~

如果不设置这2个参数,fail_timeout默认为10s,max_fails默认为1。就是说,只要某个server失效一次,则在接下来的10s内,就不会分发请求到该server上

3.proxy模块的proxy_connect_timeout

syntax:proxy_connect_timeouttimeout_in_seconds

context:http,server,location

Thisdirectiveassignsatimeoutfortheconnectiontotheproxyserver.Thisisnotthetimeuntiltheserverreturnsthepages,thisistheproxy_read_timeoutstatement.Ifyourproxyserverisup,buthanging(e.g.itdoesnothaveenoughthreadstoprocessyourrequestsoitputsyouinthepoolofconnectionstodealwithlater),thenthisstatementwillnothelpastheconnectiontotheserverhasbeenmade.Itisnecessarytokeepinmindthatthistimeoutcannotbemorethan75seconds.

4.proxy模块的proxy_read_timeout

syntax:proxy_read_timeoutthe_time

default:proxy_read_timeout60

context:http,server,location

Thisdirectivesetsthereadtimeoutfortheresponseoftheproxiedserver.ItdetermineshowlongNGINXwillwaittogettheresponsetoarequest.Thetimeoutisestablishednotforentireresponse,butonlybetweentwooperationsofreading.

Incontrasttoproxy_connect_timeout,thistimeoutwillcatchaserverthatputsyouinit'sconnectionpoolbutdoesnotrespondtoyouwithanythingbeyondthat.Becarefulthoughnottosetthistoolow,asyourproxyservermighttakealongertimetorespondtorequestsonpurpose(e.g.whenservingyouareportpagethattakessometimetocompute).Youareablethoughtohaveadifferentsettingperlocation,whichenablesyoutohaveahigherproxy_read_timeoutforthereportpage'slocation.

Iftheproxiedservernothingwillcommunicateafterthistime,thennginxisshutconnection.

另一个参考:504GatewayTime-out问题

常见于使用nginx作为webserver的服务器的网站

我遇到这个问题是在升级discuz论坛的时候遇到的

一般看来,这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的,这将导致fastcgi进程被挂起,如果你的fastcgi服务对这个挂起处理的不好,那么最后就极有可能导致504GatewayTime-out

现在的网站,尤其某些论坛有大量的回复和很多内容的,一个页面甚至有几百K

默认的fastcgi进程响应的缓冲区是8K,我们可以设置大点

在nginx.conf里,加入:

fastcgi_buffers8128k

这表示设置fastcgi缓冲区为8×128k

当然如果您在进行某一项即时的操作,可能需要nginx的超时参数调大点,例如设置成60秒:

send_timeout60;

调整了这两个参数,结果就是没有再显示那个超时,可以说效果不错,但是也可能是由于其他的原因,目前关于nginx的资料不是很多,很多事情都需要长期的经验累计才有结果。

proxy_redirectoff;

proxy_set_headerHost$host;

proxy_set_headerX-Real-IP$remote_addr;

proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

client_max_body_size10m;

client_body_buffer_size128k;

proxy_connect_timeout90;

proxy_send_timeout90;

proxy_read_timeout90;

proxy_buffer_size4k;

proxy_buffers324k;

proxy_busy_buffers_size64k;

相关推荐