Nginx:将错误页面设置为静态文件



我有以下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;
  }
}

最新更新