【发布时间】:2020-04-23 20:46:49
【问题描述】:
如果 Cloud Foundry 应用实例停止,如何显示自定义错误页面?我不想显示默认错误页面(404 应用程序不可用)。有没有办法使用路由或使用 CF Java API 来实现此行为?
【问题讨论】:
标签: java cloud-foundry pcfdev
如果 Cloud Foundry 应用实例停止,如何显示自定义错误页面?我不想显示默认错误页面(404 应用程序不可用)。有没有办法使用路由或使用 CF Java API 来实现此行为?
【问题讨论】:
标签: java cloud-foundry pcfdev
您在此处看到 404 的原因是,当您的应用程序停止时,没有任何内容映射到您的应用程序的路由。这意味着 Gorouter 在其路由表中没有您的应用使用的路由条目,因此它将返回 404(即该路由不存在)。
如果您想在应用未使用时为您的路线显示自定义消息,您可以想到几个选项。
部署一个小型静态应用程序,可能使用 staticfile_buildpack 或 nginx_buildpack,显示您的自定义消息。
现在,在您停止主应用程序之前,将其路由交换到小型静态应用程序 (cf unmap-route/cf map-route)。路由仍然存在,因此 Gorouter 不会返回 404,而是将请求发送到您的小型静态应用程序,该应用程序可以返回它想要的任何内容。
部署一个小型静态应用程序,可能使用 staticfile_buildpack 或 nginx_buildpack,显示您的自定义消息。
Create a wildcard route 并将其映射到小型静态应用程序。在这种情况下,您不需要取消映射/映射到您的小型静态应用程序的路线。
您可以将通配符路由(例如 *.example.com)映射到您的小型静态应用程序。然后,将www.example.com 或my-cool-app.example.com 等正常路线映射到您的实际应用程序。当实际的应用程序启动并运行时,它的路由更加具体,因此 Gorouter 会将流量发送到该应用程序。当您停止您的主应用程序时,路由将从 Gorouter 的路由表中删除,因此任何进入的请求都将匹配通配符路由并转到您的小型静态应用程序。
【讨论】:
map-route 会做:) 你有一个具体的例子来使用 CF Java API 自动化这个吗?这是正确的吗? -> github.com/cloudfoundry/cf-java-client/blob/…(应用程序 id -> 主应用程序,routeId -> 应映射到的应用程序/路由名称。)。如果我错了,请纠正我。
cloud foundry operations 的示例。