我们希望在我们的前端添加一个维护页面,该页面应该在后端当前不可用时显示(例如停止或部署)。当应用程序未运行时,将显示以下消息以及404
状态代码:
404 Not Found: Requested route ('name.scapp.io') does not exist.
此外,当应用程序停止时(仅当时),存在标题:
X-Cf-Routererror: unknown_route
如果应用程序未运行,是否可靠地添加此标头?如果是这种情况,我可以使用此标志显示维护页面。
顺便说一句:如果应用程序没有启动/崩溃,提供5xx
状态代码会更有意义,即停止的应用程序和错误的请求路由之间有什么不同?捕获503
错误会更容易,因为它不会干扰我们的业务逻辑(在应用程序中使用404
)。
答案 0 :(得分:5)
另一种选择是使用通配符路径。
如果请求的路由不存在,映射到通配符路由的应用程序将充当路由请求的回退应用程序。
因此,您可以将通配符路由映射到显示维护页面的静态应用程序。然后,如果映射到特定路由的应用程序已关闭或不可用,则将显示维护页面而不是404。
关于你的问题......
顺便说一句:如果应用程序没有启动/崩溃,提供5xx状态代码会更有意义,即停止的应用程序和错误的请求路由之间有什么不同?捕获503错误会更容易,因为它不会干扰我们的业务逻辑(404在应用程序中使用)。
GoRouter维护一个路由列表,用于将传入请求映射到应用程序。如果您的应用程序已关闭,那么路由表中没有路由,这就是为什么您最终得到404.如果您从GoRouter的角度考虑它,这是有道理的。没有路线,所以它返回404 Not Found。为了让503有意义,GoRouter必须知道应用程序并知道它已经关闭或没有响应。
如果您使用上面的通配符路由,我想您可能能够实现该行为,但是不是显示维护页面而是让它返回HTTP 503。
希望有所帮助!
答案 1 :(得分:1)
您看到的404错误是由CloudFoundrys路由层生成的,并保持在上游。
通常,如果您不想收到此类错误消息,则可以使用蓝绿色部署。以下是CF文档中的详细说明:https://docs.cloudfoundry.org/devguide/deploy-apps/blue-green.html
另一个选项是添加为您实现此功能的路由服务。请查看CF文档:https://docs.cloudfoundry.org/services/route-services.html