You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Terraform使用Azure应用网关实现Web重定向并配置免费托管证书

问题核心结论

你当前的思路不可行,因为Azure App Service专属的免费托管证书仅可用于App Service资源本身,不支持导出或关联到应用网关等其他Azure资源。

原架构调整方案(继续使用应用网关)

应用网关v2 SKU本身就支持免费托管证书,无需借助App Service申请证书,调整步骤如下:

  1. 将应用网关SKU升级为Standard_v2或WAF_v2,仅v2版本支持内置免费托管证书功能
  2. 删掉冗余的App Service、App Service计划、App Service证书相关资源,应用网关本身支持直接配置重定向到外部域名,无需后端服务
  3. 调整应用网关配置,新增证书绑定到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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:15:06