最近在利用Nginx做反代代理中有发现一个问题,套了多层 Nginx 后响应头出现了多个 Vary:Accept-Encoding
:
HTTP/1.1 200 OK Connection: keep-alive Content-Encoding: gzip Content-Type: text/html; charset=utf-8 Date: Fri, 17 Apr 2020 19:06:07 GMT Server: Tengine Transfer-Encoding: chunked Vary: Accept-Encoding Vary: Accept-Encoding
虽然实际使用中并没有发现有什么异常,但多余的响应头信息(Response Header)未必不会造成浏览器解析困扰,所以进行排查。
客户端直接访问服务器是没问题的,但现在链路中间使用了 CDN,这就产生了一个问题,这个问题就是源站和CDN服务器都使用了GZIP压缩,在实际使用中,这是没有必要的,一般在 CDN 开启即可,源服务器关闭GZIP压缩。但既然出现了这个问题那么就要解决,怎么办呢?这个办法就是再请求源站的时候把源站的Vary隐藏,只保留CDN的Vary信息,修改nginx配置,找到GZIP信息,在gzip_vary on;下方加入proxy_hide_header Vary;
现在我们再来看看header头部信息: