Nginxcaching页面,每隔一段时间返回二进制数据(.gz文件)。 当caching的文件夹被删除时工作

我有一个作为代理运行的nginx服务器。 它的页面被configuration为被caching并被压缩。
但是然后它每隔一段时间就会把页面作为.gz文件显示为一个文件来下载。 curl -I命中返回二进制数据。

curl -I www.site.com/cs 

但是,当我删除caching文件夹一切开始工作正常。

 sudo rm -r /tmp/nginx/cscache/ 

什么可能是错的 ? 有人可以帮忙吗?

这是configuration

  location = /cs { proxy_pass http://localhost:82; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_ignore_headers Set-Cookie; proxy_ignore_headers Cache-Control; proxy_ignore_headers Expires; proxy_ignore_headers X-Accel-Expires; add_header X-Cache-Status $upstream_cache_status; proxy_cache cscache; proxy_cache_bypass $http_cs; proxy_cache_key $request_uri; proxy_cache_valid 200 302 1d; proxy_cache_valid 404 1m; proxy_cache_use_stale error timeout invalid_header; } 

并在一个有效的curl -I调用的结果。

 [c@c ~]$ curl -I www.site.com/cs HTTP/1.1 200 OK Server: nginx Date: Wed, 28 Dec 2011 14:49:39 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive Keep-Alive: timeout=60 Vary: Accept-Encoding Vary: Cookie,Accept-Encoding X-Mod-Pagespeed: 0.9.17.7-716 Cache-Control: max-age=0, no-cache, no-store X-Cache-Status: MISS 

这种行为可以通过networking浏览器来看到,还是只能curl? 因为我不认为curl默认会放气,所以你得到二进制数据。 尝试以下操作:

 curl -I -H 'Accept-Encoding: gzip,deflate' www.site.com/cs 

我相信caching的资产正在被损坏,这就是为什么绕过caching(X-Cache-Status:MISS)的请求没有问题。 来自绕过caching的请求的响应仍然可以被caching。 我不知道你用什么条件绕过caching,但是当我遇到这个问题时,它与响应被authentication的用户被caching,然后caching被提供给未经authentication的用户有关。

如果你添加一个proxy_no_cache $http_cs指令,我怀疑这将解决它…但当然不caching绕过请求可能是不受欢迎的行为。