Nginx 反向代理到 cloudfront 分布并保留 gzip 压缩

Nginx 反向代理到 cloudfront 分布并保留 gzip 压缩

我在尝试设置保留 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;
  ...
}

相关内容