如何通过Terraform使用Azure应用网关实现Web重定向并配置免费托管证书
问题核心结论
你当前的思路不可行,因为Azure App Service专属的免费托管证书仅可用于App Service资源本身,不支持导出或关联到应用网关等其他Azure资源。
原架构调整方案(继续使用应用网关)
应用网关v2 SKU本身就支持免费托管证书,无需借助App Service申请证书,调整步骤如下:
- 将应用网关SKU升级为
Standard_v2或WAF_v2,仅v2版本支持内置免费托管证书功能 - 删掉冗余的App Service、App Service计划、App Service证书相关资源,应用网关本身支持直接配置重定向到外部域名,无需后端服务
- 调整应用网关配置,新增证书绑定到HTTPS监听器,核心配置示例如下:
resource "azurerm_application_gateway" "app_gateway" { provider = azurerm.generic name = "${local.service_name}-app-gateway" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location enable_http2 = true sku { name = "Standard_v2" # 替换为v2 SKU tier = "Standard_v2" capacity = 2 } # 其他原有配置(IP配置、前端端口、前端IP、HTTP监听器等)保持不变 # 新增SSL证书块,使用应用网关内置免费托管证书 ssl_certificate { name = "gw-managed-cert" managed { # 支持配置所有需要绑定的域名,托管证书会自动覆盖所有SNI域名 host_names = local.dns_zone_names } } # 修改HTTPS监听器,绑定证书并配置多域名SNI http_listener { name = "${local.listener_name}-https" frontend_ip_configuration_name = local.frontend_ip_configuration_name frontend_port_name = local.backend_port_name protocol = "Https" ssl_certificate_name = "gw-managed-cert" host_names = local.dns_zone_names } # 修改HTTPS重定向规则,直接跳转至外部目标域名,无需后端池 redirect_configuration { name = local.redirect_configuration_name redirect_type = "Permanent" include_path = true include_query_string = true # 直接配置目标URL,无需关联内部监听器 target_url = "https://www.target.com" } request_routing_rule { name = "${local.request_routing_rule_name}-https" rule_type = "Basic" http_listener_name = "${local.listener_name}-https" redirect_configuration_name = local.redirect_configuration_name } # 可删掉原有后端池、后端HTTP配置、HTTP转HTTPS规则之外的冗余路由规则 }
更适配需求的低成本替代方案
如果只是单纯实现多域名统一跳转,不需要用到应用网关的全量能力,以下方案成本更低、配置更简单:
- 方案1:使用Azure Front Door基础/标准层
天然支持免费多域名托管证书、HTTP自动转HTTPS,只需配置全局重定向规则即可实现所有接入域名跳转至目标站,无需维护VPC、子网等网络资源,单域名月成本仅几元,适配轻量跳转场景。 - 方案2:使用Azure静态Web应用免费层
免费额度即可支持自定义域名绑定、免费托管证书,只需在配置文件中定义全局重定向规则,无需编写代码,几乎零成本满足需求。 - 方案3:直接基于现有App Service实现
保留你已经配置的App Service、免费托管证书资源,无需应用网关,只需在App Service中配置全局重定向规则,所有域名直接解析到App Service即可,架构最简单。
内容的提问来源于stack exchange,提问作者dpa456
相关产品推荐
相关产品推荐

