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