Cloud foundry 如何查明应用程序当前是否已在Swisscom Cloud中使用CloudFoundry停止?收割台X-Cf-Routererror可靠吗?

Cloud foundry 如何查明应用程序当前是否已在Swisscom Cloud中使用CloudFoundry停止?收割台X-Cf-Routererror可靠吗?,cloud-foundry,swisscomdev,Cloud Foundry,Swisscomdev,我们希望在前端添加一个维护页面,当后端当前不可用(例如停止或部署)时,该页面将出现。当应用程序未运行时,将显示以下消息以及404状态代码: 404 Not Found: Requested route ('name.scapp.io') does not exist. 此外,当应用程序停止时(并且只有在停止时),会出现标题: 如果应用程序未运行,是否可靠地添加此标头?如果是这种情况,我可以使用此标志显示维护页面 顺便问一下:如果应用程序未启动/崩溃,即停止的应用程序和错误的请求路由不同,那么

我们希望在前端添加一个维护页面,当后端当前不可用(例如停止或部署)时,该页面将出现。当应用程序未运行时,将显示以下消息以及
404
状态代码:

404 Not Found: Requested route ('name.scapp.io') does not exist.
此外,当应用程序停止时(并且只有在停止时),会出现标题:

如果应用程序未运行,是否可靠地添加此标头?如果是这种情况,我可以使用此标志显示维护页面



顺便问一下:如果应用程序未启动/崩溃,即停止的应用程序和错误的请求路由不同,那么提供
5xx
状态代码是否更有意义?捕获
503
错误会容易得多,因为它不会干扰我们的业务逻辑(
404
在应用程序内部使用)。

您看到的404错误由CloudFoundry的路由层生成,并在上游维护

通常,如果您不想收到此类错误消息,可以使用蓝绿色部署。以下是CF文档中的详细说明:


另一个选项是添加为您实现此功能的路由服务。请查看CF文档,了解以下内容:

另一个选项是使用通配符路由

如果请求的路由不存在,映射到通配符路由的应用程序将充当路由请求的后备应用程序

因此,您可以将通配符路由映射到显示维护页面的静态应用程序。然后,如果映射到特定路线的应用程序关闭或不可用,将显示维护页面,而不是404

关于你的问题

顺便问一下:如果应用程序未启动/崩溃,即停止的应用程序和错误的请求路由不同,那么提供5xx状态代码是否更有意义?捕捉503错误会容易得多,因为它不会干扰我们的业务逻辑(404在应用程序内部使用)

GoRouter维护一个路由列表,用于将传入请求映射到应用程序。如果您的应用程序关闭,那么路由表中就没有路由,这就是为什么最终会出现404。如果你从戈罗特的角度来考虑,这是有道理的。没有路由,因此它返回一个404 Not Found。要让503有意义,GoRouter必须了解应用程序,并知道它已关闭或没有响应

如果您使用上面的通配符路由,我想您可能能够实现该行为,但是不显示维护页面,只需要让它返回HTTP503即可


希望有帮助

谢谢你的回答!不过我可能会选择@DanielMikusa的解决方案。这听起来确实是一个很好的解决方案。但请注意,这只在您提供自己的域时才起作用。您可能无法为碎片域创建通配符路由。
X-Cf-Routererror: unknown_route