配置私有端点的Azure VNET内App Service无法通过privatelink域名访问
直接访问privatelink域名返回404的原因
Azure App Service采用多租户架构,前端接入层完全依赖HTTP/HTTPS请求的Host头识别具体要路由的目标站点。你部署的App Service仅默认绑定了原始域名xxxxxxx.azurewebsites.net作为站点标识,没有注册xxxxxxx.privatelink.azurewebsites.net作为可识别的域名,因此直接请求privatelink域名时,接入层无法匹配到对应站点,直接返回404错误。
该问题和网络连通性、DNS解析无关,你的私有端点、DNS区域配置都是正常的,解析到的10.1.1.4就是正确的私有端点内网IP。
完整场景运行逻辑
整个流程分为DNS解析和请求处理两个阶段:
- DNS解析阶段:这是Azure私有端点的标准设计逻辑
- VNET内的DNS请求优先查询关联的Private Link DNS区域
- 原始域名
xxxxxxx.azurewebsites.net的公共DNS记录本身就设置了CNAME指向xxxxxxx.privatelink.azurewebsites.net - 你的VNET已经关联了对应privatelink DNS区域,因此该域名最终解析到私有端点的内网IP 10.1.1.4,和你nslookup的结果完全一致
- 请求处理阶段:
- 使用原始域名发起请求时,HTTP请求的Host头为
xxxxxxx.azurewebsites.net,App Service接入层识别到该Host头匹配你的站点,正常返回响应 - 直接使用privatelink域名发起请求时,HTTP请求的Host头为
xxxxxxx.privatelink.azurewebsites.net,该域名未被你的站点绑定,接入层无法匹配到对应站点,返回404
- 使用原始域名发起请求时,HTTP请求的Host头为
可选修复方案
如果确实需要通过privatelink域名访问App Service,只需要在App Service的「自定义域名」配置中,添加xxxxxxx.privatelink.azurewebsites.net作为自定义域名绑定即可。HTTP访问无需额外配置即可生效,HTTPS访问需要绑定对应域名的SSL证书。
内容的提问来源于stack exchange,提问作者Henkie85
相关产品推荐
相关产品推荐

