ПРОЕКТЫ 


  АРХИВ 


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]

Re: кеширование и авто ризация



On Fri, Aug 21, 2009 at 04:57:13PM +0700, Artem Bokhan wrote:

> Андрей Бойко пишет:
> >Добрый день.
> >
> >У меня возникла такая задача - есть некий сайт (или раздел сайта, не 
> >важно), требующий авторизации для просмотра. Нагрузка на него достаточно 
> >высокая, в связи с чем возникло желание его закешировать средствами nginx. 
> >При этом, информация на сайте не персонифицирована (то есть все 
> >авторизовавшиеся видят одно и то же). Можно ли как-то сделать, чтобы nginx 
> >проверял, авторизовался ли пользователь (установлена кука, и она валидна),
> Наверное, проверять куку лучше тому, кто ее выдал, а не nginx'у. Это 
> можно сделать с помощью x-accell-redirect.

Можно так.

   location / {
       proxy_pass       http://backend;
       proxy_cache      usual;
       proxy_cache_key  "$host$request_uri $cookie_NAME";
       ...
   }

   location /p/ {
       internal;
       proxy_pass   http://backend/;
       proxy_cache  protected;
       ...
   }

Для авторизованных пользователей выдавать:
X-Accel-Expires: 0
X-Accel-Redirect: /p/...

Тогда для обычных пользователей ($cookie_NAME нет или неверная) будет
выдаваться одна кэшированная копия, а для авторизованных - другая.

> > и если авторизовался - ему отдавался запрошенный контент из кеша, а если 
> > нет - его редиректило на страницу авторизации?


-- 
Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.