Nginx那些timeout梳理

2020-03-12 0 条评论 1.83k 次阅读 0 人点赞

对nginx各种timeout做一个总结吧,之前一直觉得挺乱的,需要注意fastcgi,proxy,uwsgi,scgi的那些个timeout意思是通用的,只不过是对于不同的场景

client_body_timeout time;

  • 定义的是读取客户端请求正文超时的时间,仅在两次连续读取操作之间的一段时间内设置超时,而不是整个请求主题的传输超时,如果客户端在此时间内未传输任何内容,则会返回408(请求超时)状态码而终止连接

client_header_timeout time;

  • 读取客户端请求头的超时,如果客户端在此时间内未传输整个包头,则返回408(请求超时)状态码而终止连接

nginx-client-request.png

http2_idle_timeout time;

  • 设置http2连接的空闲时间,超过该时间将会关闭连接默认3m

http2_recv_timeout time;

  • 设置超时,以期从客户端获得更多数据,然后关闭连接。(来自谷歌翻译)

keealive_timeout timeout [header_timeout];

  • 第一个参数设置keepalive 的超时时间,第二个参数在http头中添加Keep-Alive: timeout=time头中的time,(ngx_http_core_module)
  • 设置与后端服务器空闲后保持连接的时间(ngx_http_upstream_module)

lingering_timeout time;

  • nginx有一个延时关闭的机制(tcp本身就有不过nginx是自己实现的),这个值可以设置延时关闭的超时时间,到了这个时间会完全关闭连接

preread_timeout timeout;

  • 指定preread(预读)阶段的超时时间
  • preread: 将数据的初始字节读到预读缓冲区中,以允许某些模块在处理数据之前对其进行分析

proxy_cache_lock_timeout time;

  • 为proxy_cache_lock设置超时,时间到时请求江北传递到代理服务,但是响应将不会被缓存,在17.8版本之前是可以被缓存的

proxy_connect_timeout time;

  • 定义与后端服务器建立连接的超时时间,通常不能超过75秒,可以用在ngx_http_proxy_module和ngx_stream_proxy_module中

proxy_next_upstream_timeout time;

  • 限制将请求传递到next_server服务器的时间0值关闭此限制,可以用在ngx_http_proxy_module和ngx_stream_proxy_module中
  • next_server特性就是在出现某些错误时将请求传递到其他的服务器,具体可以研究proxy_next_upstream

proxy_protocol_timeout timeout;

  • 指定读取PROXY协议包头的时间,如果在此时间内未传输整个包头,则连接将关闭

proxy_read_timeout time;

  • 定义从被代理服务器读取响应的超时时间,仅在两次连续读取操作之间的设置,而不是用于传输整个响应,如果代理服务器在此时间内未传输任何内容则连接将关闭

proxy_send_timeout time;

  • 设置将请求传输到被代理服务器的超时,仅在两个连续写操作之间限制,而不是整个请求传输,如果代理服务器在此时间内未收到任何信息,则连接关闭

nginx-proxy-time.png
proxy_timeout

  • 设置在客户端或被代理服务器连接上,两次连续的读取或写操作之间的超时,如果在此时间内没有数据传输则连接将关闭,可以用在ngx_mail_proxy_module或ngx_stream_proxy_module模块中

resolver_timeout time;

  • 设置名称解析超时时间,可以用在ngx_http_core_module,ngx_http_upstream_module,ngx_mail_core_module,ngx_stream_core_module,ngx_stream_upstream_module模块中

send_timeout time;

  • 设置将响应传输到客户端的超时时间,仅在两次连续的写操作之间设置,而不用于传输整个响应,如果客户端在此时间内未收到任何信息,则连接将关闭

ssl_handshake_timeout time;

  • 设置ssl握手超时的时间

ssl_session_timeout time;

  • 指定客户端可以重用会话参数的时间,可以用在ngx_http_ssl_module,ngx_mail_ssl_module,ngx_stream_ssl_module模块中

worker_shutdown_timeout time;

  • 配置超时以正常关闭工作进程,时间到后,nginx将尝试关闭当前打开所有的连接,以便方便关闭

bighero

这个人太懒什么东西都没留下

文章评论(0)