Azure容器应用与Application Gateway集成:实际使用哪些端口?
解决Azure容器应用与Application Gateway集成时NSG端口限制导致的服务断开问题
当你将Azure容器应用与Application Gateway集成后,仅开放业务暴露的8080、5000、9000端口会出现服务断开和健康探测失败,核心原因是容器应用运行时存在几个未在公开文档中明确标注的必要通信端口,需要补充开放:
需额外开放的端口及原因
- 443端口:容器应用的控制平面(Azure Container Apps Runtime)依赖443端口与容器实例进行通信,用于同步健康状态、推送配置更新等核心管理操作,这是健康探测正常工作的关键。
- 80端口:部分场景下,容器应用内部的基础健康探测组件默认使用80端口做连通性校验,即使业务未暴露该端口,也需要允许来自Application Gateway子网的流量访问。
- 动态端口范围(可选):
- 若使用Dapr组件,需开放TCP端口范围
30000-32767,这是Dapr sidecar的默认通信区间; - 容器应用运行时内部的辅助通信可能用到
49152-65535之间的动态端口,若前两个端口开放后仍有问题,可补充添加该范围。
- 若使用Dapr组件,需开放TCP端口范围
修改后的NSG规则示例
将目标端口范围调整为包含业务端口和必要管理端口:
security_rule { name = "AllowInboundFromAGW" priority = 100 direction = "Inbound" access = "Allow" protocol = "Tcp" source_port_range = "*" destination_port_range = "80,443,5000,8080,9000,30000-32767,49152-65535" source_address_prefixes = var.public-subnet.address_prefixes destination_address_prefixes = var.private-subnet.address_prefixes }
调试建议
- 先仅开放80、443和业务端口测试,若健康探测恢复,说明核心问题已解决;
- 若仍存在服务断开情况,再逐步添加动态端口范围,缩小排查范围;
- 确认NSG规则的优先级高于其他可能拒绝流量的规则,避免被其他规则覆盖。
内容的提问来源于stack exchange,提问作者Jeppe Christensen
相关产品推荐
相关产品推荐

