Re: Обработка 502 ошибки в именованном локейшене

Alex Belyansky alex.barut at gmail.com
Thu Apr 18 14:18:48 UTC 2013


Спасибо, Максим!

Теперь все встало на свои места. Буду внимательней к документации.

On 18.04.2013 17:50, Maxim Dounin wrote:
> Hello!
>
> On Thu, Apr 18, 2013 at 02:31:04PM +0400, Alex Belyansky wrote:
>
>> Добрый день!
>>
>> Своими силами проблему никак решить не могу. В дополнение
>> прикладываю часть debug.log из которого видно, что идет внутренний
>> редирект к странице 500.html,
>> когда имеет место 404-ая ошибка и апстрим на нее не ответил.
>> А вот в случае 403-ей ошибки, когда апстрим не отвечает, то такого
>> редиректа для отдачи 500.html не срабатывает и Nginx отдает свою
>> собственную 502-ую.
> [...]
>
>> On 17.04.2013 16:14, Alex Belyansky wrote:
>>> Добрый день!
>>>
>>> Имею вот такое в конфигурации:
>>>
>>> error_page 500 501 502 503 504 /500.html;
>>>
>>>
>>> location / {
>>>             try_files   $uri    $uri/   @upstream;
>>>             error_page  404 = @upstream;
>>>             error_page  403 = @upstream;
> Надо сделать так:
>
>                 recursive_error_pages on;
>
>>> }
>>>
>>> location @upstream {
>>>     proxy_pass  http://backend;
>>> }
>>>
>>>
>>> Когда нет связи с бекендом и при этом запрашивается несуществующая
>>> страница (404), то nginx нормально отображает мою 500.html
>>> А вот когда запрашивается страница с ошибкой по правам доступа
>>> (403), то nginx отображает свою дефолтовую страницу, вместо моей
>>> 500.html
>>>
>>> Что делаю не так? Где что прописать, чтобы нормально отображалась
>>> моя 500.html для ситуации с 403-ей ?
> На самом деле 404-х ошибок у вас просто не бывает -
> перенаправление в @upstream для несуществующих файлов делается
> директивой try_files.
>
> Для того, чтобы можно было делать более одного перенаправления с
> помощью директивы error_page - нужно включить
> recursive_error_pages, см. тут:
>
> http://nginx.org/r/recursive_error_pages
>



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