Re: порядок прохождения http-фаз сервера
Oleg
lego12239 at yandex.ru
Mon Mar 18 14:34:53 UTC 2013
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. Я так понимаю, так
не получится?
Подробная информация о списке рассылки nginx-ru