Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Обновлени е кэша nginx 0.7.X з асчет загол овков запро са
Добрый день,
Подскажите, как заставить nginx седьмой ветки не использовать свой кэш,
если пользователь нажимает Ctrl+F5 в браузере?
Ситуация такова:
Стоит nginx (стоял 0.6.X) в качестве фронтенда (reverse-proxy) на
порте 80, за ним apache на 90 порте. Обновили nginx до 0.7.60 для того,
чтобы кэшировать им статику. Настройки:
proxy_cache_path /path/cache-nginx
levels=1:2 keys_zone=cache_main:10m inactive=1d
max_size=5g;
proxy_temp_path /path/cache-nginx/tmp;
proxy_cache_min_uses 1;
proxy_cache_valid 6h;
server {
location ~* \.(css|gif|jpeg|jpg|<...>)$ {
proxy_cache cache_main;
proxy_pass http://${ipaddr}:90;
}
...
}
Кэш пишется.
Тесты показали что если из апача передаются "Cache-Control: no-cache"
или устаревший Expires, то nginx ничего не кэширует, что также нужно.
Но есть и статика, которую нужно обновлять по требованию пользователя -
когда он жмет Ctrl+F5 в браузере (или просто F5 в opera). Firefox
передает "Cache-Control: no-cache" и "Pragma: no-cache", но nginx не
подключается к апачу, просто отдавая файл из кэша.
Хочется, чтобы при виде этих заголовков от клиента, nginx, как и в
случае с заголовками от бэкенда, тоже забывал что у него есть кэш и
делал честный запрос (с этими же заголовками) к бэкенду, который уже
отдаст обновленный кусок статики, который заменит то, что лежало в кэше
nginx до этого.
Задача выглядит тривиально, но ни документация ни гугл почемуто ответов
мне не дали.
Если данный функционал не реализован, то может кивнете в какое место
кода такую проверку лучше вставить? Пока что в код не смотрел.
Заранее спасибо за любую информацию.
Система:
nginx-0.7.60 (собран через "./configure --with-http_ssl_module")
freebsd-6.3, x86-32
apache-1 и apache-2 в качестве бэкендов на разные vhost'ы
|