nginx gzip Vary 标头和现有的 Vary 标头

Den*_* C. 6 nginx gzip

我正在尝试激活 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
Run Code Online (Sandbox Code Playgroud)

但我想它应该是这样的:

Vary: Accept-Encoding, User Agent
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Jas*_*tin 5

RFC2616声明重复的标头是可以接受的,并且应该被视为具有以逗号分隔的值列表的单个标头:

当且仅当该头字段的整个字段值定义为逗号分隔列表[即,#(values)] 时,消息中可以存在多个具有相同字段名称的消息头字段。通过将每个后续字段值附加到第一个字段值,每个字段值用逗号分隔,必须可以将多个标题字段组合成一个“字段名称:字段值”对,而不改变消息的语义。因此,接收具有相同字段名的头字段的顺序对组合字段值的解释很重要,因此当转发消息时,代理不得更改这些字段值的顺序。

因此,您无需执行任何操作即可获得正确的行为。