如果代理目标不可用,则 Nginx 本地回退错误页面

如果代理目标不可用,则 Nginx 本地回退错误页面

我正在通过 Nginx 服务器将请求转发到本地服务。我现在尝试实现的是,如果服务不可用,则回退到本地错误页面。

我当前的配置是

server {
    listen       80;
    server_name  "";

    location / {
        proxy_pass  http://127.0.0.1:9080;
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 1;
        proxy_next_upstream error timeout http_500 http_502 http_503 http_504 http_404;
        proxy_intercept_errors on;
    }

    error_page 501 502 503 @maintenance;
    location @maintenance {
            root   /locust/www/fallback/htdocs;
            index  index.html index.htm;
    }
}

代理有效,但只要我使 9080 上的服务不可用,我的维护位置的 index.html 就不会显示。

关于这个配置有什么问题,有什么建议吗?

答案1

实际上,我只需要稍微修改一下你的配置:

error_page 501 502 503 /500.html;
location = /500.html {
        root   /locust/www/fallback/htdocs;
}

显然,index.html您要呈现的将被重命名500.html

答案2

尝试指定错误页面的确切 URL,例如:

    proxy_intercept_errors on;
    error_page  500 502 503 504 402 403 401  /500.html;
    root   /locust/www/fallback/htdocs;

相关内容