我正在通过 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;