为特定路径设置错误页面

Noa*_*Gal 5 amazon-cloudfront

我正在将 ECS 用于 web 应用程序,并且我为代码 404 和 502 设置了错误页面定义。我当前的设置返回一个静态的 maintenance.html 文件(托管在 S3 上)并返回一个代码 200。我必须返回 200,否则Outlook(托管我的应用程序)不会呈现返回的 html,而是显示一个丑陋的错误页面。我遇到的问题是,稍后从我的客户端应用程序到我的服务器的 API 调用也可能返回 404。使用当前设置,CloudFront 拦截此回复,并返回带有代码 200 的维护.html。所以现在我的应用程序不知道有什么问题,后来解析回复失败。

有没有办法定义错误页面以仅处理特定请求?对于我的使用,我希望他们只处理对我的 /static/index.html 文件的调用。如果服务器中实际上缺少其他一些文件/API 调用,我希望我的客户端获得 404,以便它可以正确处理它。

小智 2

因此,根据我阅读的文档来回答您的问题,目前无法从 cloudfront 错误页面配置中执行此操作。

然而,我们也遇到了类似的问题,但在我们的例子中,API 调用返回了带有 s3 自定义错误 html 的 500 错误,而不是我预期仅针对 API 调用的实际服务器错误。

在这种情况下,我们最终要做的是在后端处理 500 个错误,如果请求 Url 具有 API 调用模式(我们使用 http 错误代码),则该处理程序将返回我们在 Cloudfront 错误页面中未使用的响应代码406),然后仅当对 api url 模式进行故障转移时,处理程序才会回复 406 响应代码和整个错误,而不是使用 s3 响应 html 回复 500。我知道这并不能以您希望的方式解决问题,但您可能会发现它很有帮助,直到 Cloudfront 允许基于路径模式的自定义错误响应。