nginx gzip将Vary头与现有的Vary头一起使用

我试图激活gzip压缩,我已经设置了选项gzip_vary; 包含Vary:Accept-Encoding标头。

问题是,我的应用程序已经在设置Vary:标题。 所以现在响应有两个Vary:头文件,一个来自我的应用程序,一个来自nginx

HTTP/1.1 200 OK Server: nginx Date: Sat, 17 Dec 2016 13:28:38 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Vary: Accept-Encoding Last-Modified: Sat, 17 Dec 2016 13:28:38 GMT Cache-Control: no-cache, no-store, must-revalidate, max-age=0 Pragma: no-cache Expires: Thu, 01 Jan 1970 00:00:00 GMT Vary: User-Agent Content-Encoding: gzip 

但是我想应该是这样的:

 Vary: Accept-Encoding, User Agent 

我怎样才能做到这一点?

RFC2616状态重复的头是可以接受的,应该像逗号分隔的值列表一样被视为单个头:

当且仅当该报头字段的整个字段值被定义为以逗号分隔的列表[即#(值)]时,具有相同字段名的多个消息报头字段可以存在于消息中。 必须将多个头域组合成一个“field-name:field-value”对,而不用改变消息的语义,把每个后续的域值附加到第一个域中,每个域都用逗号分隔。 因此,接收具有相同字段名的头字段的顺序对于组合字段值的解释是重要的,因此当消息被转发时,代理务必不改变这些字段值的顺序。

所以,你不需要做任何事情来获得正确的行为。

你可以用这种方式使用gzip。

 gzip on; gzip_http_version 1.1; gzip_vary on; gzip_comp_level 6; gzip_proxied any; gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js image/gif image/jpeg application/atom+xml application/rss+xml text/x-component image/png image/tiff image/vnd.wap.wbmp image/x-icon image/x-jng image/x-ms-bmp image/svg+xml image/webp application/font-woff application/msword application/pdf; gzip_buffers 16 8k; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; 

检查此链接以获取更多压缩uwsgi-nginx和nginx负载均衡器之间的stream量