nginx使用proxy模块时,默认的读取超时时间是60s。app
一、请求超时tcp
http {
include mime.types;
server_names_hash_bucket_size 512;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65; #保持
tcp_nodelay on;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 25;
include vhosts/*.conf;
}
二、后端服务器处理请求的时间设置(页面等待服务器响应时间)post
location / {
...
proxy_read_timeout 150; # 秒
...
}
nginx经常使用的超时配置说明spa
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”)
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秒
lingering_timeout
语法 lingering_timeout time
默认值 5s
上下文 http server location
说明 lingering_close生效后,在关闭链接前,会检测是否有用户发送的数据到达服务器,若是超过lingering_timeout时间后尚未数据可读,就直接关闭链接;不然,必须在读取完链接缓冲区上的数据并丢弃掉后才会关闭链接。
resolver_timeout
语法 resolver_timeout time
默认值 30s
上下文 http server location
说明 该指令设置DNS解析超时时间
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操做的时间。
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秒