Hello! On Mon, Mar 18, 2013 at 07:38:07PM +0400, Oleg wrote:
> 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; Так вешаются content-обработчики, вызываемые для данного location'а. Такие обработчики делать - проще всего, и в большинстве случаев именно они и нужны. Опять же, такие обработчики - никак не влияют на обработку запросов в других location'ах. Именно так работает proxy_pass (+ memcached, fastcgi, uwsgi, scgi), empty_gif, stub_status, perl и т.п. Но это не всё, что бывает в content-фазе. Если clcf->handler не стоит, или отказался от обработки запроса, то последовательно вызываются модули content-фазы, такие как random_index, index, autoindex, static. > Про хэндлеры фаз обработки запроса там, кстати, я ничего не нашёл. > Вопрос в чём. Можно ли повесить несколько handler'ов содержимого через > фазу обработки запроса NGX_HTTP_CONTENT_PHASE? И можно ли это сделать так, > что бы он вызывался гарантировано до proxy_pass? > Тогда, я могу там делать http-redirect на основе переменных, допустим. Нет, так работать не будет. Если стоит clcf->handler - то на обротчики content-фазы смотреть никто не будет. Если вам нужно своим модулем проверить результат работы модуля access-фазы, то это надо делать в access-фазе же (и при этом убедившись, что satisfy стоит в all). Загляните в ngx_http_core_module.c, там всё более или менее понятно. -- Maxim Dounin http://nginx.org/en/donation.html _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru