nginx超时

在 Nginx 配置中,timeout 相关的设置主要涉及到客户端和服务器之间的连接、请求处理的超时时间。以下是 Nginx 中与 timeout 相关的常见设置项:

1. client_header_timeout
描述:定义 Nginx 等待客户端发送请求头的最大时间。
默认值:60秒
配置:设置此项可以调整在读取客户端请求头时的超时时间。如果超过这个时间,Nginx 会关闭连接。
示例:
nginx
client_header_timeout 10s;
2. client_body_timeout
描述:定义 Nginx 等待客户端发送请求体的最大时间。
默认值:60秒
配置:设置此项可以调整在读取客户端请求体时的超时时间。如果超过这个时间,Nginx 会关闭连接。
示例:
nginx
client_body_timeout 10s;
3. send_timeout
描述:定义 Nginx 向客户端发送响应数据的超时时间。
默认值:60秒
配置:设置此项可以调整 Nginx 向客户端发送响应时等待的最大时间。如果客户端在这个时间内没有收到数据,Nginx 会关闭连接。
示例:
nginx
send_timeout 30s;
4. proxy_read_timeout
描述:定义 Nginx 在向后端服务器(如应用服务器)发出请求后,等待从后端服务器读取响应的最大时间。
默认值:60秒
配置:设置此项可以控制从后端服务器读取数据的最大等待时间。如果超过这个时间,Nginx 会关闭与后端的连接。
示例:
nginx
proxy_read_timeout 60s;
5. proxy_connect_timeout
描述:定义 Nginx 与后端服务器建立连接的最大时间。
默认值:60秒
配置:设置此项可以调整与后端服务器建立 TCP 连接时的超时时间。如果在此时间内无法建立连接,Nginx 会关闭连接。
示例:
nginx
proxy_connect_timeout 30s;
6. proxy_send_timeout
描述:定义 Nginx 向后端服务器发送请求数据的超时时间。
默认值:60秒
配置:设置此项可以调整向后端服务器发送请求时的最大等待时间。如果超时,Nginx 会关闭连接。
示例:
nginx
proxy_send_timeout 60s;
7. fastcgi_read_timeout
描述:定义 Nginx 从 FastCGI 后端(如 PHP-FPM)读取响应的最大时间。
默认值:60秒
配置:设置此项可以控制 Nginx 从 FastCGI 后端读取数据的最大等待时间。
示例:
nginx
fastcgi_read_timeout 60s;
8. fastcgi_send_timeout
描述:定义 Nginx 向 FastCGI 后端发送请求数据的超时时间。
默认值:60秒
配置:设置此项可以调整 Nginx 向 FastCGI 后端发送数据的最大等待时间。
示例:
nginx
fastcgi_send_timeout 60s;
9. keepalive_timeout
描述:定义 Nginx 在关闭空闲连接之前的等待时间。通常用于控制 HTTP/1.1 或 HTTP/2 的长连接。
默认值:75秒
配置:设置此项可以调整在关闭连接前等待的时间。如果在此时间内没有新的请求,连接会被关闭。
示例:
nginx
keepalive_timeout 65s;
10. tcp_nopush 和 tcp_nodelay
描述:这两个设置主要影响 Nginx 与客户端或后端之间的 TCP 连接的行为,尽管它们不直接与超时相关,但它们会影响数据发送的效率。
配置示例:
nginx
tcp_nopush on;
tcp_nodelay on;
11. http2_max_field_size 和 http2_max_header_size
描述:这两个配置与 HTTP/2 相关,用来设置 HTTP/2 请求头的最大字段大小和头部大小。
配置示例:
nginx
http2_max_field_size 16k;
http2_max_header_size 32k;
12. ssl_handshake_timeout
描述:定义 SSL 握手超时的最大时间。
默认值:60秒
配置:如果客户端与 Nginx 之间建立 SSL/TLS 连接时,超过此时间仍未完成握手,则连接将被关闭。
示例:
nginx
ssl_handshake_timeout 10s;
总结
Nginx 提供了多种与超时相关的配置选项,这些选项可以帮助你控制与客户端、后端服务器、FastCGI 服务等之间的连接和数据传输超时。根据实际情况,可以调整这些超时时间来优化性能和资源利用。




当 Nginx 中设置的超时值被触发时,通常会返回以下状态码:

1. client_header_timeout 超时
触发条件:客户端未能在规定时间内发送完整的请求头。
返回状态码:408 Request Timeout
描述:表示客户端在指定时间内没有发送完整的请求头,导致服务器关闭连接。
2. client_body_timeout 超时
触发条件:客户端未能在规定时间内发送请求体数据。
返回状态码:408 Request Timeout
描述:客户端在指定时间内没有发送请求体数据,导致服务器关闭连接。
3. send_timeout 超时
触发条件:Nginx 向客户端发送响应时,客户端在规定时间内未能接收到任何数据。
返回状态码:通常不会直接返回状态码,而是关闭连接。如果请求超时并且客户端没有及时收到响应数据,可能会导致 504 Gateway Timeout 或 408 Request Timeout,具体取决于上下游服务的配置。
4. proxy_read_timeout 超时
触发条件:Nginx 与后端服务器(如应用服务器、数据库等)之间的连接超时,Nginx 没有在规定时间内接收到后端响应。
返回状态码:504 Gateway Timeout
描述:表示 Nginx 作为网关或代理服务器,未能在规定的时间内从上游服务器(后端)接收到响应。
5. proxy_connect_timeout 超时
触发条件:Nginx 与后端服务器建立连接的超时,Nginx 未能在规定时间内与后端服务器建立连接。
返回状态码:504 Gateway Timeout
描述:表示 Nginx 无法在规定的时间内与后端服务器建立连接。
6. proxy_send_timeout 超时
触发条件:Nginx 向后端服务器发送请求时,未能在规定时间内完成数据发送。
返回状态码:通常不会直接返回状态码,但有时会导致 504 Gateway Timeout 错误。
7. fastcgi_read_timeout 超时
触发条件:Nginx 与 FastCGI 后端(如 PHP-FPM)之间的连接超时,Nginx 在规定时间内没有收到后端的响应。
返回状态码:504 Gateway Timeout
描述:表示 Nginx 作为 FastCGI 客户端,未能从 FastCGI 后端获取响应。
8. fastcgi_send_timeout 超时
触发条件:Nginx 向 FastCGI 后端发送请求时超时。
返回状态码:通常不会直接返回状态码,但有时也会触发 504 Gateway Timeout 错误。
9. keepalive_timeout 超时
触发条件:客户端与 Nginx 之间的连接超时,且没有新请求到来时,Nginx 会关闭连接。
返回状态码:通常不会直接返回状态码,连接会被关闭,客户端可能会看到“Connection closed by server”。
10. ssl_handshake_timeout 超时
触发条件:SSL/TLS 握手过程中超时,客户端和服务器之间的 SSL 握手没有在规定时间内完成。
返回状态码:504 Gateway Timeout 或 408 Request Timeout
描述:SSL 握手未能在规定时间内完成,通常会导致 504 错误。
总结
超时错误通常会返回以下几种状态码:

408 Request Timeout:通常出现在客户端请求时,客户端没有及时发送完整的请求数据(请求头或请求体)。
504 Gateway Timeout:通常出现在代理请求超时、后端服务器未及时响应时。
具体的状态码返回取决于超时发生的上下游环境,Nginx 根据超时的情况关闭连接并返回相应的错误代码。

  

posted on 2025-03-28 17:45  吃草的青蛙  阅读(288)  评论(0)    收藏  举报

导航