欢迎来到徐庆高(Tea)的个人博客网站
磨难很爱我,一度将我连根拔起。从惊慌失措到心力交瘁,我孤身一人,但并不孤独无依。依赖那些依赖我的人,信任那些信任我的人,帮助那些给予我帮助的人。如果我愿意,可以分裂成无数面镜子,让他们看见我,就像看见自己。察言观色和模仿学习是我的领域。像每个深受创伤的人那样,最终,我学会了随遇而安。
当前位置: 日志文章 > 详细内容

Nginx连接保持超时(keepalive_timeout)配置小结

2025年08月01日 Linux
keepalive_timeout 是 nginx 中一个重要的 http 配置指令,用于控制客户端连接的保持时间。下面我将详细解释这个配置,并提供示例说明。配置解释http { keepali

keepalive_timeout 是 nginx 中一个重要的 http 配置指令,用于控制客户端连接的保持时间。下面我将详细解释这个配置,并提供示例说明。

配置解释

http {
    keepalive_timeout ${nginx_keepalive_timeout};
}
  • keepalive_timeout: 这个指令设置两个值:

    1. 第一个值是客户端连接在服务器端保持打开的超时时间(必需)
    2. 第二个值是可选的,在响应头中发送的"keep-alive: timeout=time"值(用于告知浏览器)
  • ${nginx_keepalive_timeout}: 这是一个环境变量占位符,表示实际值会从环境变量中获取。这种配置方式在容器化部署中很常见。

参数说明

  1. 超时时间:单位是秒,默认值为75秒
  2. 作用:当这个时间过后,nginx会关闭空闲的客户端连接
  3. 优点:减少tcp连接的建立和关闭次数,提高性能

示例说明

示例1:基本配置

http {
    keepalive_timeout 65;
}

这表示:

  • 客户端连接在65秒空闲后将被关闭
  • 响应头中不会发送keep-alive头

示例2:带keep-alive头的配置

http {
    keepalive_timeout 65 60;
}

这表示:

  • 客户端连接在65秒空闲后将被关闭
  • 在响应头中发送"keep-alive: timeout=60",告知浏览器连接保持60秒

示例3:使用环境变量(适合docker/k8s环境)

http {
    keepalive_timeout ${nginx_keepalive_timeout};
}

运行时通过环境变量设置:

export nginx_keepalive_timeout="30"
nginx

这相当于:

http {
    keepalive_timeout 30;
}

最佳实践建议

  1. 对于高并发网站,建议设置在15-30秒之间
  2. 对于api服务,可以适当延长到60秒
  3. 对于静态资源服务器,可以设置更短一些
  4. 测试环境中可以设置为0来禁用keepalive进行调试

相关指令

  • keepalive_requests: 设置一个keepalive连接上可以服务的最大请求数
  • send_timeout: 设置向客户端发送响应的超时时间

通过合理配置keepalive_timeout,可以显著提高服务器性能,特别是在处理大量短连接请求时。

到此这篇关于nginx连接保持超时(keepalive_timeout)配置小结的文章就介绍到这了,更多相关nginx连接保持超时内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!