答案1
确保 nginx 安装了 Gzip 模块
2>&1 nginx -V | tr -- - '\n' | grep _module | grep gzip
输出应为:http_gzip_static_module
配置
服务器块下的主机配置文件。
gzip on;
gzip_disable "msie6";
gzip_comp_level 6;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_proxied any;
gzip_types
text/plain
text/css
text/js
text/xml
text/javascript
application/javascript
application/x-javascript
application/json
application/xml
application/rss+xml
image/svg+xml/javascript;
服务 nginx 重新加载
测试
curl -H "Accept-Encoding: gzip" -I https://example.com/
答案2
您是否尝试过添加“ gzip_comp_level level;
”?看起来您在配置中遗漏了某些内容。这里有一个可行的示例:
gzip on;
gzip_comp_level 2;
gzip_http_version 1.0;
gzip_proxied any;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_types text/plain text/html text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_disable "MSIE [1-6].(?!.*SV1)";
gzip_vary on;
答案3
根据我的经验,您不能依赖浏览器开发人员控制台输出来检查 gzip 压缩。
您运行的任何防病毒软件都可能会拦截并解压缩 gzip 文件,以便在它们进入浏览器之前对其进行扫描。
我已在 Nginx 服务器上启用了 gzip,但在 chrome 开发控制台中没有看到任何证据。
但 curl 却揭示了真相……
curl -H "Accept-Encoding: gzip" -I https://example.com/
返回:
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 22 Jul 2018 16:22:41 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Link: <https://example.com/>; rel=shortlink
Access-Control-Allow-Origin: https://example.com
Content-Encoding: gzip
Content-Encoding: gzip
您在响应标头中寻找的内容显然位于哪里。
你可能还想gzip_http_version 1.0;
在 Nginx conf 中添加一条指令,因为默认情况下,http 1.1 是 Nginx 提供 gzip 服务所需的最低版本