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

在Azure VM部署APISIX后路由至App Service遇404错误求助

问题分析与解决方案

核心原因

App Service的专用端点(Private Endpoint)有个关键特性:必须通过匹配其注册域名的Host头访问,直接用私有IP访问时,请求的Host头是IP地址,不符合App Service的路由规则,因此返回404。

你在VM里用域名访问正常,是因为DNS解析后请求自动带上了App Service的域名作为Host头;而APISIX转发时把域名解析成私有IP,同时默认将Host头替换为目标IP,导致App Service无法识别请求,同样返回404。

无需更换网关/容器化的解决方法

方法1:强制APISIX转发时携带正确的Host头

修改APISIX的路由或上游配置,手动设置Host头为你的App Service域名(比如yourapp.azurewebsites.net或自定义域名)。

路由配置示例(YAML):

routes:
  - uri: /*
    upstream:
      nodes:
        "10.0.5.5:443": 1  # App Service私有IP
      scheme: https
    plugins:
      proxy-rewrite:
        headers:
          set:
            Host: "yourapp.azurewebsites.net"  # 替换为你的App Service域名

上游配置示例(YAML):

upstreams:
  - id: 1
    nodes:
      "10.0.5.5:443": 1
    scheme: https
    headers:
      set:
        Host: "yourapp.azurewebsites.net"

方法2:让APISIX直接用域名作为上游目标

确保APISIX所在环境能通过私有DNS解析App Service域名到私有IP(需配置Azure私有DNS区域privatelink.azurewebsites.net,将你的App Service域名指向专用端点IP),然后将APISIX的上游地址设为App Service域名而非私有IP。

这种方式下,APISIX转发时会自动携带域名作为Host头,同时流量通过私有DNS解析到专用端点IP,完全走私有网络。

验证步骤

  1. 用curl直接测试私有IP,携带正确Host头,确认能正常返回:
    curl -H "Host: yourapp.azurewebsites.net" https://10.0.5.5
    
  2. 修改APISIX配置后,发送请求并查看access.log,确认转发的请求中Host头已正确设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:01:24