插件窝 干货文章 Nginx timeout超时如何配置

Nginx timeout超时如何配置

超时 timeout proxy 配置 360    来源:    2025-04-26

Nginx 超时(timeout)配置详解

Nginx 提供了多种超时相关的配置参数,用于控制客户端和服务器之间的连接行为。以下是主要的超时配置项及其说明:

常用超时配置参数

1. 客户端相关超时

# 客户端读取请求头的超时时间
client_header_timeout 60s;

# 客户端读取请求体的超时时间
client_body_timeout 60s;

# 客户端保持连接的超时时间(keep-alive)
keepalive_timeout 75s;

2. 代理/上游服务器相关超时

# 与上游服务器建立连接的超时时间
proxy_connect_timeout 60s;

# 从上游服务器读取响应的超时时间
proxy_read_timeout 60s;

# 向上游服务器发送请求的超时时间
proxy_send_timeout 60s;

# FastCGI服务器相关超时(类似proxy_*)
fastcgi_connect_timeout 60s;
fastcgi_read_timeout 60s;
fastcgi_send_timeout 60s;

3. 其他超时配置

# 解析域名超时时间
resolver_timeout 30s;

# SSL握手超时时间
ssl_handshake_timeout 10s;

配置示例

完整示例 (http块或server块中)

http {
    # 客户端相关
    client_header_timeout 60s;
    client_body_timeout 60s;
    keepalive_timeout 75s;

    # 代理相关
    proxy_connect_timeout 60s;
    proxy_read_timeout 600s;  # 长连接场景可适当延长
    proxy_send_timeout 60s;

    # 其他
    resolver_timeout 30s;
    ssl_handshake_timeout 10s;
}

针对特定location的配置

location /api/ {
    proxy_connect_timeout 30s;
    proxy_read_timeout 300s;
    proxy_send_timeout 30s;
}

最佳实践建议

  1. 生产环境建议

    • 对于API服务,适当增加proxy_read_timeout(如300s)
    • 对于文件上传,增加client_body_timeoutproxy_read_timeout
  2. 调试技巧

    • 使用nginx -t测试配置语法
    • 修改后使用nginx -s reload重新加载配置
  3. 监控

    • 监控Nginx日志中的超时错误
    • 使用$upstream_response_time变量记录上游响应时间
  4. 注意

    • 超时设置过长可能导致资源占用
    • 过短可能导致正常请求被中断
    • 根据实际业务需求调整

需要根据您的具体业务场景调整这些超时值,特别是对于处理大文件上传或长轮询请求的场景。