当后端请求成功时,如何调试从 Azure API 管理到 Front Door 的 502 Bad Gateway 错误响应?

Posted

技术标签:

【中文标题】当后端请求成功时,如何调试从 Azure API 管理到 Front Door 的 502 Bad Gateway 错误响应?【英文标题】:How can I debug 502 Bad Gateway error responses from Azure API Management to Front Door, when the backend request is successful? 【发布时间】:2021-07-13 12:52:09 【问题描述】:

我在 Azure API 管理 (APIM) 前设置了 Azure Front Door (FD)。大多数请求都适用于这个特定的 APIM 后端。 GET /projects 在浏览器中返回 502 Bad Gateway。我可以看到APIM向后端的请求成功,项目数据从数据库返回。但是,FD 日志显示错误:

isReceivedFromClient_b: true
httpStatusCode_s: 502
httpStatusDetails_s: 502
pop_s: LON
cacheStatus_s: N/A
ErrorInfo_s: OriginInvalidResponse

来自文档:

OriginInvalidResponse:Origin 返回了无效或无法识别的响应。 缓存状态为 N/A:请求被签名 URL 和规则集拒绝。

我已尝试禁用 WAFPolicy。所以,据我所知,这条路线上没有配置任何规则。 Azure 诊断中启用了 FrontdoorWebApplicationFirewallLog,但此日志中根本没有任何条目。正是在这里,我希望看到被阻止请求的日志。

关于发生了什么的任何想法,或者我可以如何进一步调试?

【问题讨论】:

【参考方案1】:

让我分享一个我也遇到过的错误,它可能与您的情况有关,也可能无关。 在这种情况下,我在使用 API Manager 中发布的 API 的 Microsoft Power Automate 流中看到了错误 502 Bad Gateway。当 API Manager 调用后端系统时,它使用 HTTP 200 代码成功。

问题的原因是响应 JSON 被定义为一个数组,但 JSON 仅添加一个项目,因此不包含“[”和“]”符号。 抱歉,如果这没有帮助。

【讨论】:

谢谢@EboGit。那很有意思。我已经确认 200 个成功的 Response-Body 包含方括号并且被正确格式化为数组。

以上是关于当后端请求成功时,如何调试从 Azure API 管理到 Front Door 的 502 Bad Gateway 错误响应?的主要内容,如果未能解决你的问题,请参考以下文章

Azure API 管理 - 如何刷新访问令牌后端 API?

如何使用节点 js 从后端 API 请求 apikey?

我们如何使用 Moya 调试/查看通过 API 设置的请求?

azure sdk deleteAsync 请求内容 null

简单的登录注册逻辑。

09-后端对前端请求方式的限制