Вопрос: nginx error_page для ошибок 502 Bad Gateway


Вот моя конфигурация сервера:

    server {
            listen 0.0.0.0;
            server_name dev.host.com;

            location / {
                    include /etc/nginx/proxy.conf;
                    proxy_pass http://127.0.0.1:5000;
                    proxy_redirect default;

                    error_page 502 =200 @maintenance;
            }

            location ^~ /(img|js|css)/ {
                    root /path/to/application/assets;
                    expires max;
                    break;

                    error_page 404 =302 /;
            }

            location @maintenance { 
                     root /path/to/static/offline/files;
                     try_files $uri $uri/ /index.html =503;
            }
    }

Когда приложение upstream не подключено к сети, я получаю страницу nginx 502 по умолчанию для корневого пути (то есть: GET /). Любая идея, почему это происходит? Я хотел бы, чтобы корневой путь отвечал на странице обслуживания так же, как и любой другой путь запроса.


5
2018-02-12 00:10


Источник




Ответы:


Я сделал это для всего vhost:

server {
         (...) 
         error_page 500 502 503 504 /5xx.html;
            location /5xx.html{
                    root /www/error_pages/;
         } 
}

Это отлично работает для меня.


1
2018-02-22 09:52



Это поймает корневой путь, но это похоже на try_files директива больше не работает. Каждый запрос просто приводит к index.html чтобы запросы на изображения и CSS не выполнялись. - mikeycgto


Дьяволы в деталях; мой @maintenance именованное местоположение не было настроено правильно. В частности, аргумент send ($uri/) до try_files вызвало эту проблему. Вот правильное имя:

location @maintenance { 
    root /path/to/static/offline/files;
    try_files $uri /index.html =503;
}

1
2018-04-24 02:54



Ха, я также следил за сообщением в блоге mjcblog.net/2011/08/... и столкнулся с тем же вопросом; - Der Hochstapler


Попробуйте установить proxy_intercept_errors on; https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors


1
2018-02-17 13:02



Не повезло; попробовал директиву на http, server а также proxy блоки местоположения - mikeycgto