кеширование и авторизация
Igor Sysoev
is at rambler-co.ru
Fri Aug 21 14:03:32 MSD 2009
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
More information about the nginx-ru
mailing list