详解Nginx服务器中配置超时时间的⽅法
⼀、啥时候⽤到
⽤来设置请求资源和服务器返回的时间,保证⼀个请求占⽤固定时间,超出后报504超时!这样可以保证⼀个请求占⽤过长时间。
⼆、主要参数
使⽤nginx服务器如果遇到timeou情况时可以如下设置参数,使⽤fastcgi:
fastcgi_connect_timeout 75;  链接
fastcgi_read_timeout 600;  读取
fastcgi_send_timeout 600;  发请求
这两个选项.
fastcgi_read_timeout是指fastcgi进程向nginx进程发送response的整个过程的超时时间
fastcgi_send_timeout是指nginx进程向fastcgi进程发送request的整个过程的超时时间
这两个选项默认都是秒(s),可以⼿动指定为分钟(m),⼩时(h)等
三、其他常⽤参数以及参数说明
keepalive_timeout  600;  连接超时时间,1分钟,具体时间可以根据请求(例如后台导⼊)需要的时间来设置
proxy_connect_timeout 600;    1分钟
proxy_read_timeout 600;    1分钟
nginx超时配置参数说明:
keepalive_timeout
语法 keepalive_timeout timeout [ header_timeout ]
默认值 75s
上下⽂ http server location
说明第⼀个参数指定了与client的keep-alive连接超时时间。服务器将会在这个时间后关闭连接。可选的第⼆个参数指定了在响应头Keep-Alive: timeout=time中的time值。这个头能够让⼀些浏览器主动关闭连接,这样服务器就不必要去关闭连接了。没有这个参数,nginx不会发送Keep-Alive响应头(尽管并不是由这个头来决定连接是否“keep-alive”)
两个参数的值可并不相同
注意不同浏览器怎么处理“keep-alive”头
MSIE和Opera忽略掉"Keep-Alive: timeout=<N>" header.
MSIE保持连接⼤约60-65秒,然后发送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
说明该指令设置与upstream server的连接超时时间,有必要记住,这个超时不能超过75秒。
这个不是等待后端返回页⾯的时间,那是由proxy_read_timeout声明的。如果你的upstream服务器起来了,但是hanging住了(例如,没有⾜够的线程处理请求,所以把你的请求放到请求池⾥稍后处理),那么这个声明是没有⽤的,由于与upstream 服务器的连接已经建⽴了。
proxy_read_timeout
语法 proxy_read_timeout time
默认值 60s
上下⽂ http server location
说明该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来获得请求的响应。这个
时间不是获得整个response的时间,⽽是两次reading操作的时间。
client_header_timeout
语法 client_header_timeout time
默认值 60s
上下⽂ http server
说明指定等待client发送⼀个请求头的超时时间(例如:GET / HTTP/1.1).仅当在⼀次read中,没有收到请求头,才会算成超时。如果在超时时间内,client没发送任何东西,nginx返回HTTP状态码408(“Request timed out”)
client_body_timeout
语法 client_body_timeout time
默认值 60s
上下⽂ http server location
说明该指令设置请求体(request body)的读超时时间。仅当在⼀次readstep中,没有得到请求体,就会设为超时。超时后,nginx返回HTTP状态码408(“Request timed out”)
lingering_timeout
语法 lingering_timeout time
默认值 5s
上下⽂ http server location
说明 lingering_close⽣效后,在关闭连接前,会检测是否有⽤户发送的数据到达服务器,如果超过lingering_timeout时间后还没有数据可读,就直接关闭连接;否则,必须在读取完连接缓冲区上的数据并丢弃掉后才会关闭连接。
resolver_timeout
语法 resolver_timeout time
默认值 30s
上下⽂ http server location
说明该指令设置DNS解析超时时间
proxy_send_timeout
语法 proxy_send_timeout time
默认值 60s
上下⽂ http server location
说明这个指定设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,⽽是在两次write操作期间。如果超时后,upstream没有收到新的数据,nginx会关闭连接
proxy_upstream_fail_timeout(fail_timeout)
语法 server address [fail_timeout=30s]
默认值 10s
上下⽂ upstream
说明 Upstream模块下 server指令的参数,设置了某⼀个upstream后端失败了指定次数(max_fails)后,该后端不可操作的时间,默认为10秒
四、实例
这⾥来看⼀个把Nginx的超时时间上调的例⼦。
看看时间是否符合要求,在fig⾥⾯的三个参数:
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;
nginx部署前端项目变成:
location /foo {
proxy_pass x: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;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。