通过应用网关实现私有VNET中容器应用的子域名映射公网暴露
实现通配符域名自动映射到Azure Container Apps的解决方案
核心思路
利用Application Gateway的主机头重写和通配符监听器功能,将任意*.mydomain.com的请求自动转换为对应的*.env.containerapps.io请求转发至ACA环境,无需为每个应用单独配置后端池和监听器。
具体配置步骤
1. 创建通配符多站点监听器
在Application Gateway中新建多站点HTTPS监听器,配置如下:- 前端IP配置:选择已创建的静态公网IP
- 端口:443
- 主机名:
*.mydomain.com - SSL证书:绑定已上传的
*.mydomain.com通配符自签名证书
2. 构建统一后端池
新建后端池,直接添加ACA环境的ILB静态IP作为后端目标(无需为每个应用单独创建池)。确保Application Gateway所在子网与ACA的私有VNET存在网络连通性(同VNET或已配置VNET对等)。3. 配置路由规则与主机头重写(关键)
创建路由规则关联上述监听器和后端池,重点在后端设置中配置主机头重写:- 新建后端设置,协议选择HTTP(因无需端到端加密),端口设为80
- 在“主机头”选项中选择自定义,并输入表达式:
该表达式会自动提取请求主机头的子域名前缀(如@{split(http.host, '.')[0]}.env.containerapps.ioapp1从app1.mydomain.com),拼接为ACA环境对应的子域名 - 无需勾选“从后端地址选取主机名”,直接使用自定义重写的主机头
4. 配置健康探针
新建自定义HTTP探针,配置如下:- 主机名:填写任意一个可用的ACA应用子域名(如
app1.env.containerapps.io) - 路径:
/ - 端口:80
将探针关联到上述后端设置,确保Application Gateway能正常检测后端健康状态
- 主机名:填写任意一个可用的ACA应用子域名(如
5. 配置公网DNS解析
在mydomain.com的DNS服务商控制台,添加通配符A记录:- 记录类型:A
- 主机记录:
* - 指向地址:Application Gateway的静态公网IP
注意事项
- 确保ACA环境的访问限制允许来自Application Gateway所在子网的流量,可在ACA应用的“网络”设置中添加AG子网的IP范围
- 若客户端访问时出现证书信任问题,可将自签名证书导入客户端信任存储(生产环境建议使用CA签发证书)
- 验证配置时,可使用
curl -v https://app2.mydomain.com查看请求头中的主机头是否被正确重写
内容的提问来源于stack exchange,提问作者Abraham
相关产品推荐
相关产品推荐

