nginx не показывает пользовательскую страницу ошибок с помощью uwsgi - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь добавить пользовательскую страницу ошибок для 502 и 504 ответов. В настоящее время у меня есть следующая конфигурация nginx для моего сайта (другие файлы конфигурации не затрагиваются):

server {
    listen       80;
    listen       [::]:80;

    server_name 10.12.112.163;

    add_header X-UA-Compatible "IE=Edge,chrome=1";
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    charset utf-8;
    try_files $uri @icons;

    error_page 502 504 /502.html;
    location = /502.html {
       root /home/dmoj/site;
       internal;
    }

    location @icons {
        root /home/dmoj/site/resources/icons;
        error_page 403 404 = @uwsgi;
        log_not_found off;
    }

    location @uwsgi {
        uwsgi_read_timeout 600;
        uwsgi_pass unix:///tmp/dmoj-site.sock;
        include uwsgi_params;
    }
}

Когда я остановил uwsgi и перевел свой браузер на 10.12.112.163, по умолчанию отображается сообщение «502 Bad Gateway» nginx, однако, когда я перехожу на 10.12.112.163/502.html, моя страница отображается отлично.

Я также проверил это без директивы internal, и это то же самое.

1 Ответ

0 голосов
/ 27 октября 2018

Не уверен, если это где-то задокументировано, но я не думаю, что error_page может быть приковано к другому error_page.

В вашем случае error_page 404 очень похоже на поведение оператора try_files. Подробнее см. в этом документе .

Так что ваши цепочки error_page можно заменить, вот так:

location @icons {
    root /home/dmoj/site/resources/icons;
    try_files $uri @uwsgi;
    log_not_found off;
}
...