我正在使用 nginx 作为单台机器的反向代理。当后端机器出现故障时,我希望出现错误页面。
这是我的配置文件:
server {
listen 80;
access_log /var/log/nginx/access.log;
root /var/www/nginx;
error_page 403 404 500 502 503 504 /error.html;
location / {
proxy_pass http://192.168.1.78/;
include /etc/nginx/proxy.conf;
}
答案1
啊哈,我明白问题所在了。你没有为 nginx 提供任何方法来实际提供诸如 之类的静态文件/error.html
,因此它试图将它们传递到你的后端。
快速解决方法是:
location /error.html {
internal;
}
这将导致 nginx/error.html
自行处理. 然后它将尝试提供定义文档之外的文件root
。
顺便说一句,您可能希望对 4xx 错误和 5xx 错误使用不同的错误页面。如果后端暂时瘫痪,您肯定不希望人们(或搜索引擎!)看到“未找到”或其他错误页面。