从 Http 服务器提供 Web 应用程序错误消息

从 Http 服务器提供 Web 应用程序错误消息

我有 nginx 作为 http 服务器,tomcat 作为后端(使用 proxy_pass)。它运行良好,但我想定义自己的错误页面(404、500 等),并且它们由 nginx 而不是 tomcat 提供。例如,我有以下资源:

https://domain.com/resource

不存在。如果我 [GET] 该 URL,则会从 Tomcat 而不是 nginx 收到“未找到”消息。

我想要的是,每次 Tomcat 响应 404(或任何其他错误消息)时,nginx 都会向用户发送一条消息:nginx 可访问某些 html 文件。

我配置 nginx 服务器的方式非常简单,只需:

location / {
    proxy_pass   http://localhost:8080/<webapp-name>/;
}

并且我已经将端口 8080(即 tomcat)配置为无法从本机外部访问。

我认为location在 nginx 配置中使用不同的指令不会起作用,因为有些资源依赖于 URL:

https://domain.com/customer/<non-existent-customer-name>/[GET]

始终会返回 404(或任何其他错误消息),而:

https://domain.com/customer/<existent-customer>/[GET]

将返回不同于 404(客户存在)的任何内容。

有没有办法用 Nginx(http 服务器)来提供 Tomcat(应用服务器)错误消息?检查指令发送的消息proxy_pass并对其采取行动?

答案1

好的,我找到了。在servernginx 站点配置部分中,我使用的是:

error_page 404 /404.html;
location = /404.html {
    root /var/www/nginx;
}

location / {
    proxy_pass http://localhost:8080/api/;
    proxy_intercept_errors on;
}

您需要将proxy_intercept_errors onnginx 添加到拦截他们.Nginx 将仅拦截您用 定义的错误error_page

相关内容