nginx是否支持将请求压缩到上游?

时间:2013-05-30 12:10:42

标签: nginx

nginx支持吗? 你能告诉我一些配置吗?

[Client]           [Nginx Reverse Proxy]               [BackEnd]
   |   [Raw Post]         |    [gzip encoded request]     |   
   |--------------------> | ----------------------------->|
   |                      |                               |  
   |   [Raw Response]     |    [gzip encoded response]    |
   | <------------------  | <-----------------------------|
   |                      |                               |

3 个答案:

答案 0 :(得分:3)

显然有一些方法可以做到这一点。 Nginx有一个gunzip模块,gzip解压缩响应:

  

ngx_http_gunzip_module模块是一个解压缩的过滤器   对于没有的“Content-Encoding:gzip”响应   支持“gzip”编码方法。该模块将是有用的   希望存储压缩数据,以节省空间并减少I / O.   成本。

     

默认情况下不构建此模块,应使用该模块启用   --with-http_gunzip_module配置参数。

来源:http://nginx.org/en/docs/http/ngx_http_gunzip_module.html

然后你就可以使用它:

gunzip on;

希望对你有用。

另见这个问题: Is there sort of unzip modules in nginx?

答案 1 :(得分:2)

完整而正确的答案是nginx 可以这样做,但有几点需要注意。为了向边缘客户端(用户PC)提供未压缩的响应,必须使用gunzip模块编译nginx - 默认情况下不构建/包含该模块。这与gzip模块相反,允许nginx解压缩在磁盘上找到的或从后端服务器获取的已压缩资源。

所以在编译nginx时,请包括: --with-http_gunzip_module

在您的nginx.conf中,您将有一个这样的块来描述从后端服务器获取的请求:

    location @backend {
        ...
        proxy_pass http://10.0.0.xxx;
        gunzip on;
        proxy_set_header Accept-Encoding "gzip";
    }

答案 2 :(得分:1)

您可以通过在gzip中将off指令设置为nginx.conf来关闭nginx中的gzip压缩:

gzip off

此外,您只能为代理请求启用gzip压缩:

gzip_proxied off

Nginx有一个很棒的wiki,其中清楚地解释了所有这些信息: http://wiki.nginx.org/HttpGzipModule

关于nginx代理:在nginx wiki中也有明确描述:

  

示例:

location / {
  proxy_pass        http://localhost:8000;
  proxy_set_header  X-Real-IP  $remote_addr;
}

http://wiki.nginx.org/HttpProxyModule

设置代理有很多不同的方法,所以你应该深入了解你需要什么,对此没有“一个”答案。