我有以下nginx配置:
server {
listen 80;
server_name default;
location / {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080/;
}
}
当http://127.0.0.1:8080/
的内部服务没有响应时,nginx返回502坏网关错误。
我的问题:我如何配置nginx返回一个静态的html文件,例如/var/www/error.html
,当这样的错误发生?
What I tried
从这里得到提示,我试了这个:
server {
listen 80;
server_name default;
location / {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080/;
}
error_page 404 502 /error.html;
location = /error.html {
internal;
root /var/www;
}
}
如果服务(在端口8080
上)关闭,则工作正常,但是当服务启动时,我尝试访问url /error.html
nginx匹配最后一个位置(返回静态文件),我想避免它。
如果你真的不想暴露错误页面,你可以使用命名位置。
server {
listen 80;
server_name default;
location / {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080/;
# probably you also need this
# proxy_intercept_errors on;
}
error_page 404 502 @error;
location @error {
root /var/www;
try_files /error.html /error.html;
}
}