gpt4 book ai didi

cloud-foundry - 如何在 Swisscom Cloud 中使用 CloudFoundry 了解应用程序当前是否已停止? header X-Cf-Routererror 可靠吗?

转载 作者:行者123 更新时间:2023-12-04 04:41:52 25 4
gpt4 key购买 nike

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

404 Not Found: Requested route ('name.scapp.io') does not exist.

此外,当应用程序停止时(并且仅在此时),还有 header :

X-Cf-Routererror: unknown_route

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


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

最佳答案

另一种选择是使用通配符路由。

https://docs.cloudfoundry.org/devguide/deploy-apps/routes-domains.html#create-an-http-route-with-wildcard-hostname

An application mapped to a wildcard route acts as a fallback app for route requests if the requested route does not exist.

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

关于你的问题...

By the way: Wouldn't it make more sense to provide a 5xx status code if the application is not started/crashed, i.e. differ between stopped applications and wrong request routes? Catching a 503 error would be much easier, as it does not interfere with our business logic (404 is used inside the application).

GoRouter 维护一个路由列表,用于将传入请求映射到应用程序。如果您的应用程序已关闭,那么路由表中就没有路由,这就是您最终得到 404 的原因。如果您从 GoRouter 的角度考虑它,这是有道理的。没有路由,因此它返回 404 Not Found。要使 503 有意义,GoRouter 必须知道该应用程序并知道它已关闭或没有响应。

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

希望对您有所帮助!

关于cloud-foundry - 如何在 Swisscom Cloud 中使用 CloudFoundry 了解应用程序当前是否已停止? header X-Cf-Routererror 可靠吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46959909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com