![通过应用程序网关启用客户端对内部 Azure 容器应用程序的访问](https://linux22.com/image/787715/%E9%80%9A%E8%BF%87%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%BD%91%E5%85%B3%E5%90%AF%E7%94%A8%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%AF%B9%E5%86%85%E9%83%A8%20Azure%20%E5%AE%B9%E5%99%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E8%AE%BF%E9%97%AE.png)
我已经设置了一个位于 VNET 内的容器应用环境。需要通过应用程序网关从外部访问其中的容器。按照此 learn.microsoft 页面中的步骤操作并没有得到我需要的结果:
https://learn.microsoft.com/en-us/azure/container-apps/waf-app-gateway?tabs=default-domain
设置后,应用程序网关会执行其工作,如果我按照其公共 IP,则会重定向到容器应用程序的 FQDN。我的问题是客户端无法访问所述容器。由于它位于 VNET 后面,因此每个请求都会错误名称未解决或者换句话说,由于容器位于私有网络内,因此可以找到其 IP 地址。
该文件第一段写道:“在 Azure 容器应用中托管应用或微服务时,您可能并不总是希望将它们直接发布到 Internet。相反,您可能希望通过反向代理公开它们。“,反向代理是应用程序网关。
如何让位于 VNET 后面的容器可供想要通过应用程序网关访问它的外部客户端访问?
如果您需要任何其他信息,请直接询问,我会很乐意为您提供。
感谢您的阅读和帮助。
答案1
当您使用“内部”网络配置配置容器应用时,提供的 FQDN 不起作用,这仅适用于外部访问。请参阅这里:
设置为内部时,环境没有公共终结点。内部环境部署时,虚拟 IP (VIP) 映射到内部 IP 地址。内部终结点是 Azure 内部负载均衡器 (ILB),IP 地址从自定义 VNet 的私有 IP 地址列表中发出。
您需要将应用程序网关设置为解析为容器应用程序的私有 IP,或者创建一个为该 IP 创建名称的私有 DNS 区域,然后指向这些名称。