Re: Обработка 502 ошибки в именованном локейшене
Maxim Dounin
mdounin at mdounin.ru
Thu Apr 18 13:50:01 UTC 2013
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
--
Maxim Dounin
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru