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