nginx 没有使用 gzip 与后端服务器通信

Mic*_*uch 5 nginx gzip

我们的 Web 服务器运行 IIS 7,并配置为压缩动态和静态内容。当我直接访问这些服务器时,gzip 压缩就起作用了。

我最近把nginx放在他们面前,gzip压缩已经停止了。我能够通过在 nginx 本身上显式启用 gzip 压缩来解决这个问题,但是考虑到我有六个后端并且只有一个活动的 nginx 框,这似乎有点低效。

nginx 似乎正在剥离Accept-Encoding标头。有没有人对如何“纠正”这种行为有任何建议?

示例配置:

upstream backend {
  server 127.0.0.1:8080;
}

server {
  listen   80;
  proxy_set_header        Host            $host;
  proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

  location / {
    proxy_pass http://backend;
  }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ald 3

Nginx 是一个 HTTP/1.0 反向代理,gzip 压缩直到 HTTP/1.1 才出现在 HTTP 规范中。

因此 nginx 不会发送 gzip Accept-encoding 标头,因为它根本不接受它。在 nginx 中实现 gzip 处理的正确方法是与后端对话 fastcgi 或使用 nginx 进行 gzip。