当前位置 主页 > 服务器问题 > nginx问题汇总 >

    Nginx的超时timeout配置详解

    栏目:nginx问题汇总 时间:2018-09-22 16:39

    本篇文章主要介绍了Nginx的超时timeout配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    本文介绍 Nginx 的 超时(timeout)配置。分享给大家,具体如下:

    Nginx 处理的每个请求均有相应的超时设置。如果做好这些超时时间的限定,判定超时后资源被释放,用来处理其他的请求,以此提升 Nginx 的性能。

    keepalive_timeout

    HTTP 是一种无状态协议,客户端向服务器发送一个 TCP 请求,服务端响应完毕后断开连接。

    如果客户端向服务器发送多个请求,每个请求都要建立各自独立的连接以传输数据。

    HTTP 有一个 KeepAlive 模式,它告诉 webserver 在处理完一个请求后保持这个 TCP 连接的打开状态。若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。

    KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。

    Nginx 使用 keepalive_timeout 来指定 KeepAlive 的超时时间(timeout)。指定每个 TCP 连接最多可以保持多长时间。Nginx 的默认值是 75 秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为 0,就禁止了 keepalive 连接。

    # 配置段: http, server, locationkeepalive_timeout 60s;

    client_body_timeout

    指定客户端与服务端建立连接后发送 request body 的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx 返回 HTTP 408(Request Timed Out)。

    # 配置段: http, server, locationclient_body_timeout 20s;

    client_header_timeout

    客户端向服务端发送一个完整的 request header 的超时时间。如果客户端在指定时间内没有发送一个完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)。

    # 配置段: http, server, locationclient_header_timeout 10s;

    send_timeout

    服务端向客户端传输数据的超时时间。

    # 配置段: http, server, locationsend_timeout 30s;

    客户度连接nginx超时, 建议5s内

    接收客户端header超时, 默认60s, 如果60s内没有收到完整的http包头, 返回408

    Syntax: client_header_timeout time;Default:  client_header_timeout 60s;Context:  http, serverDefines a timeout for reading client request header. If a client does not transmit the entire header within this time, the 408 (Request Time-out) error is returned to the client.

    接收客户端body超时, 默认60s, 如果连续的60s内没有收到客户端的1个字节, 返回408

    Syntax: client_body_timeout time;Default:  client_body_timeout 60s;Context:  http, server, locationDefines a timeout for reading client request body. The timeout is set only for a period between two successive read operations, not for the transmission of the whole request body. If a client does not transmit anything within this time, the 408 (Request Time-out) error is returned to the client.

    keepalive时间,默认75s,通常keepalive_timeout应该比client_body_timeout大

    Syntax: keepalive_timeout timeout [header_timeout];Default:  keepalive_timeout 75s;Context:  http, server, locationThe first parameter sets a timeout during which a keep-alive client connection will stay open on the server side. The zero value disables keep-alive client connections. The optional second parameter sets a value in the “Keep-Alive: timeout=time” response header field. Two parameters may differ.