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

虚拟网络对等与服务端点:如何实现两个Azure应用服务互通

Azure App Service跨VNet对等后403错误排查

问题背景

  • 手动创建App Service A,部署在vnetA的subnetA中
  • 通过Terraform创建App Service B,部署在vnetB的subnetB中
  • 已建立两个虚拟网络的对等连接,且确认地址空间无重叠
  • subnetB已配置应用服务委派和Microsoft.Web服务端点,但AppA调用AppB仍返回403错误

当前subnetB的Terraform配置

resource "azurerm_subnet" "subnetB" {
  name                 = "subnetB"
  resource_group_name  = "rgB"
  virtual_network_name = "vnetB"
  address_prefixes     = [cidrsubnet(azurerm_virtual_network.vnetB.address_space[0], 2, 1)]

  delegation {
    name = "appServiceDelegation"
    service_delegation {
        name    = "Microsoft.Web/serverFarms"
        actions = ["Microsoft.Network/virtualNetworks/subnets/action"]
    }
  }  

  service_endpoints =  ["Microsoft.Web"]
}

可能遗漏的配置项

1. App Service B的访问限制未添加对等VNet允许规则

默认情况下,配置了VNet集成的App Service仅允许自身VNet内的流量访问。需要手动将vnetA的地址空间加入App Service B的允许列表:

resource "azurerm_app_service" "appB" {
  # 基础配置...
  site_config {
    ip_restriction {
      name               = "AllowVnetA"
      ip_address         = "<vnetA的地址前缀,例如10.0.0.0/16>"
      priority           = 100
      action             = "Allow"
    }
  }
}

2. 确认VNet对等连接的双向配置

检查vnetA与vnetB的对等连接是否为双向:

  • 两边对等连接均需启用允许转发流量
  • 若涉及网关传输,需同步启用允许网关传输

3. 验证App Service B的VNet集成配置

确保App Service B已正确关联到subnetB,Terraform中需添加以下配置:

resource "azurerm_app_service" "appB" {
  # 其他配置...
  virtual_network_subnet_id = azurerm_subnet.subnetB.id
}

4. subnetA添加Microsoft.Web服务端点

若App Service A需通过服务端点访问App Service B,需在subnetA的配置中添加Microsoft.Web服务端点(无论subnetA是手动还是Terraform创建)。

5. 检查NSG入站规则

  • 检查subnetB关联的NSG,添加入站规则允许vnetA的地址空间访问80/443端口
  • 检查subnetA关联的NSG,添加出站规则允许访问vnetB的地址空间及80/443端口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:16:04