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

Den*_*ter 11 nginx proxy

我正在通过 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

代理可以工作,但是一旦我在 9080 上设置服务不可用,我的维护位置的 index.html 就不会显示。

关于此配置有什么问题的任何建议?

小智 13

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

error_page 501 502 503 /500.html;
location = /500.html {
        root   /locust/www/fallback/htdocs;
}
Run Code Online (Sandbox Code Playgroud)

并且显然将index.html您想要呈现的重命名为500.html.