关于Nginx配置文件Gzip的配置问题:不太明白这个gzip_proxied的作用是什么,应该如何正确配置呢?

关于Nginx配置文件Gzip的配置问题:不太明白这个gzip_proxied的作用是什么,应该如何正确配置呢?

官方说明如下:
Syntax: gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;
Default: gzip_proxied off;
Context: http, server, location

阅读 16.9k
3 个回答

题主这么说,应该是对gzip_comp_level,gzip_types,gzip_vary等配置已经了解了。
我们来谈一下这个gzip_proxied
Nginx作为反向代理的时候启用,根据某些请求和应答来决定是否在对代理请求的应答启用gzip压缩,是否压缩取决于请求头中的“Via”字段,指令中可以同时指定多个不同的参数,意义如下:
expired - 启用压缩,如果header头中包含 "Expires" 头信息
no-cache - 启用压缩,如果header头中包含 "Cache-Control:no-cache" 头信息
no-store - 启用压缩,如果header头中包含 "Cache-Control:no-store" 头信息
private - 启用压缩,如果header头中包含 "Cache-Control:private" 头信息
no_last_modified - 启用压缩,如果header头中不包含 "Last-Modified" 头信息
no_etag - 启用压缩 ,如果header头中不包含 "ETag" 头信息
auth - 启用压缩 , 如果header头中包含 "Authorization" 头信息
any - 无条件启用压缩

楼上的解释是完全错误的。不知楼上如何解释“是否压缩取决于请求头中的“Via”字段”这句话?

正确答案是:此指令指示的是当nginx自己处在反代之后时,是否开启gzip。只有这样,请求头中才会包含Via字段。

新手上路,请多包涵

gzip_proxied 困惑

该参数应该有两个点让人困惑:

  1. 困惑一:处理对象
  2. 困惑二:参数值,具体如何实现

困惑一:处理对象

gzip_proxied 处理对象的困惑:

  • 服务器发送:proxy 模块接收到其它nginx服务器反向代理发送过来的数据
  • 高级语言发送:proxy fastcgi uwsgi scgi 等代理接收高级语言发送的数据

分析

nginx 开启gzip压缩的原因,是为了减少网络传输速度

以php-fpm举例:

php-fpm 通常是跟nginx的 fastcgi 模块结合使用

php-fpm 并非一定在本地,也可以是其它服务器发送过来,接收数据时也应该nginx支持gzip发送出去,理论分析上,gzip_proxied 应该同时支持服务器和高级语言发送过来的数据

困惑一:参数值具体实现

待续...

以上是我分析的结果,未必是真实,希望大佬指导下

压缩这块应该涉及到4大模块

- ngx_http_headers_module  缓存文件,节省文件传输,以及*.gz压缩文件缓存
- ngx_http_gzip_static_module 优先发送*.gz文件,节省cpu压缩消耗 
- ngx_http_gunzip_module 对不支持gzip头的客户端设置
- ngx_http_gzip_module 开启gzip

这4大模块如何结合使用,希望大佬写一篇文章

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏