Назад | Перейти на главную страницу

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;
            }
    }

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

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

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

У меня это отлично работает.

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

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

Попробуйте включить proxy_intercept_errors; https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors