nginx支持吗? 你能告诉我一些配置吗?
[Client] [Nginx Reverse Proxy] [BackEnd]
| [Raw Post] | [gzip encoded request] |
|--------------------> | ----------------------------->|
| | |
| [Raw Response] | [gzip encoded response] |
| <------------------ | <-----------------------------|
| | |
答案 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;
希望对你有用。
答案 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
设置代理有很多不同的方法,所以你应该深入了解你需要什么,对此没有“一个”答案。