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