我在尝试设置保留 gzip 压缩的 nginx 反向代理时遇到了问题。
我的设置:
我有一个启用了 gzip 压缩的 CLoudfront 发行版(正如您在http://dvty1uxa5ftxq.cloudfront.net我的 main.js 确实被压缩了,大小缩小了 1/3 以上)。
由于某些页面被重定向到另一个网站,在我的主网站 URL 上,我实际上是通过 nginx 代理路由请求,配置的相关部分如下所示
server { listen 443 ssl; ... proxy_set_header X-NginX-Proxy true; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location @cloudfront { proxy_set_header Host $http_host; proxy_pass http://dvty1uxa5ftxq.cloudfront.net; }
当浏览器使用正确的 accept 标头指定 gzip 来请求网站资产时,这似乎不足以阻止 gzip 压缩。我对 nginx 了解不够,不知道是否需要启用 gzip 模块或执行任何操作。我能找到的大多数文档都解释了如何激活 gzip 加密(例如针对本地文件),但当代理端点(此处为 CloudFront)已经执行可靠的 gzip 加密时,却没有解释。
有人能帮我解释一下这个问题吗?
答案1
据我所知,您必须启用 gzip 并告诉 nginx 即使通过代理也可以发送压缩响应。
location / {
...
gzip on;
gzip_proxied any;
...
}
看https://nginx.org/en/docs/http/ngx_http_gzip_module.htm了解更多文档。
如果要为不支持 gzip 的客户端启用解压缩,请查看枪械。
location / {
...
gunzip on;
...
}