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