curl -X GET -I -H" Cache-Control:no-cache"没有绕过

时间:2015-06-24 23:06:06

标签: curl nginx cache-control no-cache

我正在做以下

$ curl -X GET -I -H "Cache-Control: no-cache" https:/myserver/myimage.jpg
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Wed, 24 Jun 2015 22:55:31 GMT
Content-Type: image/jpeg
Content-Length: 37502
Connection: keep-alive
Etag: "wzsdm-1434973626-37502-1204291434"
Cache-Control: max-age=604800, public
Expires: Wed, 01 Jul 2015 22:43:01 GMT
X-Proxy-Cache: HIT

我期望获得以下内容

X-Proxy-Cache: BYPASS

我在Nginx上的配置如下:

   location ~* \.(?:jpg|jpeg|gif|png|pdf|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ { 
      proxy_cache my_zone;
      add_header X-Proxy-Cache $upstream_cache_status;

      include proxy_params;
      proxy_pass http://my-backend;
   }

我可能错过任何配置吗?

1 个答案:

答案 0 :(得分:1)

默认情况下,Nginx的缓存不支持Cache-Control:no-cache请求标头,也不支持Pragma:no-cache请求标头。您必须显式配置Nginx以绕过缓存,并在用户代理发送这些请求标头时将请求传递到源服务器。

将以下行添加到配置文件中:

proxy_cache_bypass $http_pragma;
proxy_cache_bypass $http_cache_control;

From Nginx's caching guide

  

NGINX如何处理Pragma标头?

     

Pragma:客户端添加no-cache标头以绕过所有标头   中间缓存并直接进入原始服务器   要求的内容。 NGINX默认不遵守Pragma标头,   但您可以使用以下配置功能   proxy_cache_bypass指令: