6

剂量 nginx 支持这个吗?请你给我看一下它的一些配置?

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

3 回答 3

4

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

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;

希望这对你有用。

另请参阅这个 SO 问题: Is there sort of unzip modules in nginx?

于 2013-05-30T15:23:36.453 回答
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";
    }
于 2016-01-03T20:41:41.213 回答
1

您可以在 nginx 中关闭 gzip 压缩,方法是将gzip指令设置offnginx.conf

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

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

于 2013-05-30T14:51:34.003 回答