我正在做以下
$ 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;
}
我可能错过任何配置吗?
答案 0 :(得分:1)
默认情况下,Nginx的缓存不支持Cache-Control:no-cache
请求标头,也不支持Pragma:no-cache
请求标头。您必须显式配置Nginx以绕过缓存,并在用户代理发送这些请求标头时将请求传递到源服务器。
将以下行添加到配置文件中:
proxy_cache_bypass $http_pragma;
proxy_cache_bypass $http_cache_control;
NGINX如何处理Pragma标头?
Pragma:客户端添加no-cache标头以绕过所有标头 中间缓存并直接进入原始服务器 要求的内容。 NGINX默认不遵守Pragma标头, 但您可以使用以下配置功能 proxy_cache_bypass指令: