Azure 应用程序网关 API 管理探针无法连接到后端

问题描述 投票:0回答:2

我希望有人可以帮助理解我在这里做错了什么,因为我完全困惑和迷失了。

我正在尝试以内部模式构建 API 管理,并在其前面有一个应用程序网关。

根据 Microsoft 文档,我构建了以下资源:

  • API管理
  • 应用网关
  • 虚拟网络
  • 在虚拟网络中我设置了2个子网(应用程序网关和API管理)
  • 2 个网络安全组,每个资源对应一个

根据我在网上找到的文档和一般建议。我创建了一个 Keyvault 并生成了一个证书。在主题中我设置了这个 CN:

api.test.com

我为此 KeyVault 分配了托管身份。

在此步骤之后,我创建了一个 API 管理服务。里面唯一的 api 是 a

/configurations

一旦完成。在 Newtork 选项卡中,我将 Api 管理设置为内部模式,并选择了我的虚拟网络和我为此服务设计的子网。到目前为止一切都很顺利。更新完成后,我在 api 管理中设置了自定义域。

在选项卡中

Custom Domain
我添加了一个新域,在主机名中我设置了与在KeyVault中设置的相同的CN

api.test.com

并选择必须从中获取正确证书的 KeyVault。

一切都在这里完成。

我在设计的虚拟网络和子网中创建了应用程序网关。

我首先将后端池设置为 API 管理的网关 url

api.test.com

我通过协议 HTTPS 端口 443 设置了 HTTP 设置,如下

enter image description here

仍然在应用程序网关中,我在端口 443 上设置侦听器,并从 KeyVault 选择我的证书

在规则中,我配置了侦听器和后端目标以定位后端池。

此时,当我测试探针时:

enter image description here

我收到以下错误

Cannot connect to backend server. Check whether any NSG/UDR/Firewall is blocking access to the server. Check if application is running on correct port.

我检查了我的两个安全组,设置如下

这是 apim 的消息

enter image description here

这适用于应用程序网关

enter image description here

任何人都可以帮助理解我在这里做错了什么吗?因为我不知道可能出了什么问题。

如果您需要更多信息,请随时告诉我。如果很容易,我可以在此处发布我的 terraform 脚本来部署此基础设施。

azure azure-api-management azure-virtual-network azure-application-gateway
2个回答
0
投票

你说:我首先将后端池设置为API管理“api.test.com”的网关url

该 url 无法访问并指向公共 IP(我猜应该是应用程序网关 IP)

后端池应为api管理服务的私有SLB IP地址。侦听器应该侦听主机名,因此当它收到具有该主机名的请求时,它会通过其私有 IP 和包含相同侦听器主机名作为值的主机标头将其转发到 api 管理服务。

enter image description here


0
投票

@mohaidar - 这对我也有用。 谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.