Re: порядок прохождения http-фаз сервера

Maxim Dounin mdounin at mdounin.ru
Mon Mar 18 14:53:22 UTC 2013


Hello!

On Mon, Mar 18, 2013 at 06:34:53PM +0400, Oleg wrote:

> On Mon, Mar 18, 2013 at 05:40:42PM +0400, Maxim Dounin wrote:
> > Hello!
> > 
> > On Mon, Mar 18, 2013 at 05:24:25PM +0400, Oleg wrote:
> > 
> > >   Привет всем.
> > > 
> > >   Фазы сервера:
> > > 
> > > typedef enum {
> > >     NGX_HTTP_POST_READ_PHASE = 0,
> > > 
> > >     NGX_HTTP_SERVER_REWRITE_PHASE,
> > > 
> > >     NGX_HTTP_FIND_CONFIG_PHASE,
> > >     NGX_HTTP_REWRITE_PHASE,
> > >     NGX_HTTP_POST_REWRITE_PHASE,
> > > 
> > >     NGX_HTTP_PREACCESS_PHASE,
> > > 
> > >     NGX_HTTP_ACCESS_PHASE,
> > >     NGX_HTTP_POST_ACCESS_PHASE,
> > > 
> > >     NGX_HTTP_TRY_FILES_PHASE,
> > >     NGX_HTTP_CONTENT_PHASE,
> > > 
> > >     NGX_HTTP_LOG_PHASE
> > > } ngx_http_phases;
> > > 
> > >   проходят в порядке их перечисления?
> > 
> > Да.
> > 
> > (Называется это обычно "фазы обработки запроса".)
> 
>   Т.е. сделать редирект в конфиге на основе результата аутентификации не
> получится, я правильно понимаю?
>   Например, надо сделать в случае неудачной аутентификации редирект на страницу
> с логином/паролем:
> 
>   location = /login {
>     # тут страница для аутентификации и редиректом на /user/$USERNAME в случае
>     # удачи.
>     fastcgi_pass 127.0.0.1:9000;
>     include fastcgi_params;
>     fastcgi_param SERVER_NAME $http_host;
>   }
>   location /user/user1 {
>     # аутентификация по cookie, полученном в локации /login
>     auth_cookie "CGISESSID";
>     auth_cookie_path "/tmp";
> 
>     # cookie кончился
>     if ( $auth_cookie_fail ) {
>       return 302 http://$host/login;
>     }
> 
>     proxy_pass http://127.0.0.2:2001/;
>     include proxy_params;
>   }
> 
>   $auth_cookie_fail устанавливается модулем auth_cookie. Я так понимаю, так
> не получится?

Совершенно верно.

-- 
Maxim Dounin
http://nginx.org/en/donation.html



Подробная информация о списке рассылки nginx-ru