keepalive_timeout
是 nginx 中一个重要的 http 配置指令,用于控制客户端连接的保持时间。下面我将详细解释这个配置,并提供示例说明。
配置解释
http { keepalive_timeout ${nginx_keepalive_timeout}; }
keepalive_timeout: 这个指令设置两个值:
- 第一个值是客户端连接在服务器端保持打开的超时时间(必需)
- 第二个值是可选的,在响应头中发送的"keep-alive: timeout=time"值(用于告知浏览器)
${nginx_keepalive_timeout}: 这是一个环境变量占位符,表示实际值会从环境变量中获取。这种配置方式在容器化部署中很常见。
参数说明
- 超时时间:单位是秒,默认值为75秒
- 作用:当这个时间过后,nginx会关闭空闲的客户端连接
- 优点:减少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; }
最佳实践建议
- 对于高并发网站,建议设置在15-30秒之间
- 对于api服务,可以适当延长到60秒
- 对于静态资源服务器,可以设置更短一些
- 测试环境中可以设置为0来禁用keepalive进行调试
相关指令
keepalive_requests
: 设置一个keepalive连接上可以服务的最大请求数send_timeout
: 设置向客户端发送响应的超时时间
通过合理配置keepalive_timeout,可以显著提高服务器性能,特别是在处理大量短连接请求时。
到此这篇关于nginx连接保持超时(keepalive_timeout)配置小结的文章就介绍到这了,更多相关nginx连接保持超时内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论