ПРОЕКТЫ 


  АРХИВ 


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: кеширование и авто ризация



А если так:
location / {
        if (!-f /path/to/cookie/$cookie_NAME) {
        rewrite  ^(.+)$  auth.html  break;

        proxy_pass http://backend;
}
??

On Fri, 21 Aug 2009 15:03:32 +0400
Igor Sysoev <is@xxxxxxxxxxxxx> wrote:

> On Fri, Aug 21, 2009 at 02:52:46PM +0400, Андрей Бойко wrote:
> 
> > Если я правильно все прочитал про x-accel-redirect - каждый раз таки будет 
> > дергаться апач с php.
> 
> Да.
> 
> > Суть в том, что в php все процессы и так оптимизированы до отдачи готового 
> > файла с диска или из мемкеша. Задача как раз в том, чтобы апач не дергать 
> > вообще (пока кеш есть), но при этом таки проверять авторизованность. 
> > Мне видится такой вариант скорее - в php создавать файл с тем же именем, 
> > что значение куки, и nginx-ом проверять его наличие. Тогда при авторизации 
> > один раз дергается php/апач, а потом не дергается. Пока только не соображу, 
> > как проверять.
> 
>    location / {
> 
>        root  /path/to/cookie_files;
>        $cookie_NAME  @auth;
> 
>        proxy_pass    http://backend;  # без слэша!!
>        proxy_cache   ...
>    }
> 
>    location @auth {
>        proxy_pass    http://backend;
>    }
> 
> 
> > Или я где-то не дочитал про x-accel-redirect?
> > 
> > On Fri, 21 Aug 2009 14:03:32 +0400
> > Igor Sysoev <is@xxxxxxxxxxxxx> wrote:
> > 
> > > 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
> > > 
> > > 
> > 
> > 
> > -- 
> > Андрей Бойко <kaa@xxxxxxxxxx>
> 
> -- 
> Игорь Сысоев
> http://sysoev.ru
> 
> 


-- 
Андрей Бойко <kaa@xxxxxxxxxx>



 




Copyright © Lexa Software, 1996-2009.