gzip_disable可匹配User-Agent禁用Gzip压缩,支持字符串/正则,内置msie6简写;作用域为http/server/location;需通过响应头验证是否生效。

直接用 gzip_disable 匹配 User-Agent 字符串或正则表达式,就能对特定浏览器禁用 Gzip 压缩。这是 Nginx 官方唯一支持的、基于请求头条件禁用压缩的方式。
匹配常见旧版浏览器
IE 6 及更早版本兼容性差,容易因 Gzip 出错。Nginx 内置了简写支持:
-
gzip_disable msie6;—— 禁用所有 IE6(含 SP1) -
gzip_disable "MSIE [1-6].(?!.*SV1)";—— 更精细:匹配 IE1–6,但排除带 SV1 标识的(即部分 IE6 SP2)
匹配移动端或特殊 UA
某些老旧 Android 或 iOS 设备解析 Gzip 不稳定,可用字符串或正则批量匹配:
gzip_disable "Android|iPhone|BlackBerry";gzip_disable "UCBrowser|Opera Mobi";- 注意:大小写敏感,建议统一用小写写法并配合
$http_user_agent变量做归一化(需在 map 中处理)
作用域与生效位置
该指令可放在 http、server 或 location 块中,优先级遵循 Nginx 配置继承规则:
- 全局禁用:写在
http块,影响全部站点 - 单站点禁用:写在对应
server块 - 仅某路径下禁用:写在
location /api/ { ... }内,但注意——gzip_disable在 location 中仍只检查 User-Agent,不识别 URL 路径本身
验证是否生效
发一个真实请求,检查响应头:
- 请求时带上
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) - 观察响应头中是否没有
Content-Encoding: gzip - 同时确认
Vary: Accept-Encoding仍存在(说明 gzip 模块已加载,只是被条件跳过)


















