ПРОЕКТЫ 


  АРХИВ 


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 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 {

root /var/www/errors;
}

то при обращении снаружи к /503.html увидим нашу страницу ошибок, а
запрос к бэкэнду спроксирован не будет.

Хотелось бы как-нибудь так:

location /503.html {
if (!$internal) {
 proxy_pass http://127.0.0.1;
}
}

Это как-нибудь возможно реализовать? В переменных в документации не
вижу, за что там можно было бы зацепиться...

--
// cronfy




 




Copyright © Lexa Software, 1996-2009.