ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Обработать http ст атус с backend'а



On Wed, Jun 17, 2009 at 10:30:06PM +0400, Alexey V. Karagodov wrote:

> 
> On 17.06.2009, at 21:36, Олег Петрачёв wrote:
> 
> >День добрый,
> >
> >>>статусах. Например, при 503 показать специальную страничку  
> >>>nginx'ом, а
> >>>при всех остальных спроксировать, что отдал backend.
> >>Как раз proxy_intercept_errors и нужно.
> >перенаправлять их на обработку nginx'у с помощью директивы error_page.
> >
> >Ага, спасибо, осознал. Но теперь хочется странного: чтобы эти страницы
> >ошибок были видны только при внутренних редиректах. Знаю, что есть
> >internal, но он при попытке обратиться к location отдаёт 404. А нужно
> >другое: если запрос к странице ошибок вызван внутренним редиректом
> >(например, через error_page), то отдавать её, а если не внутренним, то
> >проксировать к backend'у.
> >
> >Если сделать
> >
> >location / {
> >proxy_intercept_errors on;
> >error_page 503 /503.html;
> >proxy_pass http://127.0.0.1;
> >}
> >
> - location /503.html {
> + location @503.html {

Тут проблема в том, что при перенапралении в @... URI не меняется.
То есть, nginx будет пытаться открыть локальный файл типа /чего-то.php
и, может, даже откроет и отдаст как статику.

> >root /var/www/errors;
> >}
> >
> >то при обращении снаружи к /503.html увидим нашу страницу ошибок, а
> >запрос к бэкэнду спроксирован не будет.
> >
> >Хотелось бы как-нибудь так:
> >
> >location /503.html {
> >if (!$internal) {
> > proxy_pass http://127.0.0.1;
> >}
> >}
> >
> >Это как-нибудь возможно реализовать? В переменных в документации не
> >вижу, за что там можно было бы зацепиться...
> >
> >--
> >// cronfy
> 

-- 
Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.