ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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 з асчет загол овков запро са


  • To: nginx-ru@xxxxxxxxx
  • Subject: Обновлени е кэша nginx 0.7.X з асчет загол овков запро са
  • From: Mike Kazantsev <Kazantsev_MS@xxxxxxxxxxxxxxxxx>
  • Date: Mon, 22 Jun 2009 14:03:01 +0600
  • Organization: VimpelCom

Добрый день,

Подскажите, как заставить 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'ы



 




Copyright © Lexa Software, 1996-2009.