配置 NGINX:如何处理上游自身的 500 错误,以及 Nginx 如何处理其他 5xx 错误

配置 NGINX:如何处理上游自身的 500 错误,以及 Nginx 如何处理其他 5xx 错误

我们有一个 NGINX 反向代理(集群),有 45 个上游(22 个域、20 个子域、11 个应用程序)。

我们的一些项目为全球的一些用户托管 API。

我们的开发人员针对特殊情况设计了特殊的自定义 500 响应,并希望仅向 tomcat_api 上游显示该消息。

他们想要提供 500 个页面,并处理 NGINX 上 tomcat_api 上游成员的异常。但我们希望处理 NGINX 上的所有其他 5xx 错误。

因为我无法成功,所以现在需要帮助。

以下是服务器配置,您能帮忙吗?

服务器 {
  服务器名称api.hotcoldwarm.com;

  地点 / {
    添加标题X-Frame-Options SAMEORIGIN;
    添加标题X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    添加标题 x-redirect-uri hotcoldwarm;
    add_header 严格传输安全“max-age=31536000; includeSubdomains; always”;
    proxy_set_header X-真实IP $remote_addr;
    proxy_set_header 主机 $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    代理服务器:http://tomcat_api;
    proxy_next_upstream 错误超时 http_502 http_503 http_504 http_404;
    代理连接超时1;
  }
    听80;
    听443 ssl;
    ssl_certificate /etc/rapidssl/live/api.hotcoldwarm.com/fullchain.pem;
    ssl_certificate_key /etc/rapidssl/live/api.hotcoldwarm.com/privkey.pem;
    包括/etc/rapidssl/options-ssl-nginx.conf;
    如果 ($scheme != "https") {
        返回 301 https://$host$request_uri;
    }

}

谢谢。

答案1

您可能需要考虑proxy_intercept_errors on;选项。然后配置自定义error_page。查看答案https://stackoverflow.com/a/8715597/434255

相关内容