2015-06-24 4 views
0

Я делаю следующеелокон -X GET -I -H "Cache-Control: нет кэша" не перепускной

$ 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

Я думаю, что вам нужно http://nginx.org/r/proxy_cache_bypass. Заголовок «Cache-Control» предназначен для браузера, а не для сервера. –

+0

Да Я знаю, что «Cache-Control: no-cache» для браузера. В Chrome он отправляет 'Cache-Control: max-age = 0'. Я включил proxy_cache_bypass и не BYPASS кэш. –

+0

А что вы включили? –

ответ

1

По умолчанию кеш Nginx не соблюдает заголовок запроса Cache-Control:no-cache или заголовок запроса Pragma:no-cache. Вы должны явно настроить Nginx на обход кеша и передать запрос на исходный сервер, когда пользовательский агент отправляет эти заголовки запроса.

Добавьте следующие строки в файл конфигурации:

proxy_cache_bypass $http_pragma; 
proxy_cache_bypass $http_cache_control; 

:

Каким Handle NGINX Прагма заголовок?

URL-адрес Pragma: no-cache добавлен клиентами для обхода всех промежуточных кешей и отправляется прямо на исходный сервер для запрашиваемого содержимого . NGINX не чтит заголовок Pragma по умолчанию, , но вы можете настроить функцию со следующей директивой proxy_cache_bypass: