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

Alexey V. Karagodov kav at karagodov.name
Wed Jun 17 22:30:06 MSD 2009


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






More information about the nginx-ru mailing list