nginx 1.8.1没有使用Vary Accept头caching

我有一个奇怪的nginxcaching行为。 有2个回应。 第一个已经停止caching,当我更新服务器从1.6到1.8.1,另一个caching像以前一样。 第一个(破碎)有以下响应标题:

允许→GET,HEAD,OPTIONS

连接→保持活动

内容编码→gzip

内容 – 语言→ru

内容types→应用程序/ JSON

date→2016年3月15日星期二07:31:53 GMT

服务器→nginx / 1.8.1

传输编码→分块

变化→ 接受,接受 – 语言,Cookie,接受编码

X-Frame-Options→SAMEORIGIN

另一个响应(按照我的预期工作)有以下标题:

连接→保持活动

内容编码→gzip

内容 – 语言→ru

内容types→应用程序/ JSON

date→2016年3月15日星期二07:32:40 GMT

服务器→nginx / 1.8.1

传输编码→分块

变化→ 接受语言,Cookie,接受编码

X-Frame-Options→SAMEORIGIN

在第一种情况下没有cookie或Accept标头,但是只有

proxy_ignore_headers Vary 

保存了这个情况。 它适用于它。 看起来像一些魔术。 但是,什么是错的,我错过了什么? 以下是当前设置:

 proxy_pass http://localhost:7050; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; limit_req zone=banka burst=5 nodelay; proxy_cache cache; proxy_cache_valid 5m; proxy_ignore_headers Vary; 

不知道你是否修好它,会在这里放下,以防有人需要它。

在Nginx的源代码中,Vary头文件最多使用了42个字符。 在我的情况下,有51个字符,因此我的Vary头被当作Vary处理:*(no-cache)。 设置最大为84固定对我来说。

这篇文章更深入地解释了它。

https://thedotproduct.org/nginx-vary-header-handling/

感谢那个发短文的人。