我在一个容器环境中有两个 Azure 容器应用程序(app1、app2)。在容器应用程序中,Spring 应用程序正在运行。我尝试从 app1 向 app2 发出 REST 请求,但收到以下响应:
502 Bad Gateway upstream connect error or disconnect/reset before headers. retried and the latest reset reason: protocol error.
错误发生在app1和app2之间。当 app1 被调用时,它开始执行代码,但 app2 回答此错误。
当我在本地环境中运行 app1 并通过 azure 公共 url 调用 app2 时,它可以正常工作,没有任何问题。当我在本地 Docker 容器中运行这两个应用程序时,它也可以工作。 但是从我 app1 在 azure 容器环境中运行的那一刻起,我就收到了错误。我尝试通过公共 url 从 app1 调用 app2,并通过“http://app2”在容器环境中调用 app2。两者都不起作用。 我还尝试了多种方法在 app1 中进行其余调用(ProxyExchange、RestTemplate Exchange、RestTemplate get、OpenFeign)。一切都没有改变。
首先在 app1 和 app2 中执行健康检查,就像您已经检查日志一样,以确保应用程序正在运行且健康。
验证 DNS 解析在 Azure 容器应用环境中是否正常工作。确保 app1 可以解析 app2 的 DNS,反之亦然。
检查是否有任何 NSG、防火墙或 Azure 容器应用环境配置可能会阻止容器之间的通信。
检查 app1 是否尝试连接到 app2 的正确端点。最后确认应用程序正在侦听正确的端口,并且它们之间的通信正在使用预期的协议(HTTP/HTTPS)。
如果这些都不能解决我建议您在 azure 门户中提出支持请求,我会给您下面的链接,