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

Oleg lego12239 at yandex.ru
Mon Mar 18 15:38:07 UTC 2013


On Mon, Mar 18, 2013 at 06:53:22PM +0400, Maxim Dounin wrote:
> Hello!
> 
> >   Например, надо сделать в случае неудачной аутентификации редирект на страницу
> > с логином/паролем:
> > 
> >   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. Я так понимаю, так
> > не получится?
> 
> Совершенно верно.

  А http-redirect может только модуль фазы NGX_HTTP_CONTENT_PHASE слать или с
фазы NGX_HTTP_ACCESS_PHASE тоже можно слать перенаправления?
  И ещё вопрос. Здесь - http://www.evanmiller.org/nginx-modules-guide.html -
написано, что хэндлер контента может быть только один и вешается так:

  clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
  clcf->handler = ngx_http_circle_gif_handler;

  Про хэндлеры фаз обработки запроса там, кстати, я ничего не нашёл.
  Вопрос в чём. Можно ли повесить несколько handler'ов содержимого через
фазу обработки запроса NGX_HTTP_CONTENT_PHASE? И можно ли это сделать так,
что бы он вызывался гарантировано до proxy_pass?
  Тогда, я могу там делать http-redirect на основе переменных, допустим.



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