0

我正在做以下事情

$ 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;
   }

有没有我可能错过的配置?

4

1 回答 1

2

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

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

proxy_cache_bypass $http_pragma;
proxy_cache_bypass $http_cache_control;

来自 Nginx 的缓存指南

NGINX 如何处理 Pragma Header?

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

于 2017-01-30T22:51:35.933 回答