keepalive_disable指令仅识别msie6/msie7/msie8/msie9/gecko/konqueror/safari等预设关键词(不区分大小写),须配置在http或server块中,用于禁用Nginx与客户端间特定老旧浏览器的长连接,避免响应错乱。

直接在 server 块里写 keepalive_disable,就能让 Nginx 对特定老旧浏览器禁用长连接,避免响应错乱或连接复用异常。
哪些设备能被识别
该指令不支持自定义 UA 字符串,只认固定关键词(大小写不敏感):
- msie6 / msie7 / msie8 / msie9:对应 IE 6–9
- gecko:早期 Firefox(如 Firefox 3.x)
- konqueror:KDE 桌面环境的旧版浏览器
- safari:仅影响 Safari 5 及更早版本(现代 Safari 不受影响)
配置位置和语法
必须放在 http 或 server 块中,不能写在 location 里。例如:
server {
listen 80;
server_name example.com;
<pre class="brush:php;toolbar:false;">keepalive_disable msie6 gecko;
# 其他配置...}
这样设置后,只要请求头中的 User-Agent 包含 MSIE 6.0 或 Gecko/20050111 这类标识,Nginx 就不会返回 Connection: keep-alive,连接处理完立即关闭。
生效逻辑说明
这个指令控制的是 Nginx 与客户端之间的连接,不是 upstream 后端。它通过检查原始请求头的 UA 字段匹配关键词来触发行为,匹配成功即跳过长连接机制,不依赖任何正则或模糊匹配。
注意:若同时在 http 和 server 块中都配置了该指令,server 块的设置会覆盖 http 块的全局配置。










