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

使用Terraform在Azure配置域名流量重定向,解决VM访问异常问题

问题排查与修复方案

核心问题分析

从你的Terraform配置和访问症状来看,存在3个关键问题导致域名无法正常访问:

1. DNS记录不匹配

你创建的DNS A记录是appgateway.yourdomain12.com(配置中name = "appgateway"),但实际访问的是根域名yourdomain12.com,根域名没有对应的解析记录指向Application Gateway的公网IP,导致域名无法定位到正确的服务入口。

2. HTTPS重定向配置无效

你配置了HTTP到HTTPS的重定向规则,但Application Gateway未配置HTTPS所需的443前端端口、SSL证书和HTTPS监听器,重定向后没有对应的服务处理请求,直接引发访问失败。

3. 监听器Host Name限制

你的HTTP监听器指定了host_name = "yourdomain12.com",只有当请求的Host Header完全匹配该域名时才会触发路由。如果之前用IP能访问,说明当时监听器无Host Name限制,现在添加限制后需确保域名访问的Host Header正确传递。


修复后的Terraform配置修改

1. 添加根域名DNS解析记录

修改或新增根域名的A记录,让yourdomain12.com直接指向App Gateway的公网IP:

# 根域名A记录(若需保留子域名appgateway.yourdomain12.com,可保留原A记录并新增该记录)
resource "azurerm_dns_a_record" "root" {
  name                = "@"  # "@"代表根域名
  zone_name           = azurerm_dns_zone.example.name
  resource_group_name = azurerm_resource_group.rg.name
  ttl                 = 300
  records             = [azurerm_public_ip.pip.ip_address]
}

2. 移除无效的HTTPS重定向(或配置完整HTTPS)

如果暂时不需要HTTPS访问,先移除重定向配置,确保HTTP请求能正常路由:

resource "azurerm_application_gateway" "main" {
  # ... 其他原有配置保持不变 ...

  # 删除以下无效的重定向配置块
  # redirect_configuration {
  #   name="redirectHttpToHttps"
  #   redirect_type = "Permanent"
  #   target_listener_name = var.listener_name
  #   target_url = "https://yourdomain12.com"
  #   include_path = true
  #   include_query_string = true
  # }

  # ... 其他原有配置保持不变 ...
}

若需要HTTPS访问,需补充配置:

  • 新增443前端端口
  • 上传SSL证书到App Gateway
  • 创建HTTPS监听器
  • 配置对应路由规则绑定HTTPS监听器

3. (可选)支持IP和域名双访问

如果需要同时支持IP访问和域名访问,新增一个不带Host Name限制的HTTP监听器,并配置优先级更低的路由规则:

resource "azurerm_application_gateway" "main" {
  # ... 其他原有配置保持不变 ...

  # 新增无Host Name限制的HTTP监听器
  http_listener {
    name                           = "ip-listener"
    frontend_ip_configuration_name = var.frontend_ip_configuration_name
    frontend_port_name             = var.frontend_port_name
    protocol                       = "Http"
    # 不设置host_name,允许所有Host Header的请求
  }

  # 新增对应路由规则,优先级设为2(低于域名监听器的规则)
  request_routing_rule {
    name                       = "ip-routing-rule"
    rule_type                  = "Basic"
    http_listener_name         = "ip-listener"
    backend_address_pool_name  = var.backend_address_pool_name
    backend_http_settings_name = var.http_setting_name
    priority                   = 2
  }

  # ... 其他原有配置保持不变 ...
}

额外排查步骤

  1. 验证DNS解析:执行nslookup yourdomain12.com,确认返回的IP是App Gateway的公网IP。
  2. 检查Backend健康状态:在Azure Portal的Application Gateway中查看Backend Health,确认两台VM的状态为Healthy。
  3. 检查防火墙规则:确保VM的NSG允许来自App Gateway子网(10.21.0.0/24)的80端口流量。

内容的提问来源于stack exchange,提问作者Lekha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 07:44:54