如何在Azure中为现有App Service配置自定义子域名并指向关联服务?
嘿,我来帮你搞定这个Azure子域名配置的问题,先给你理清楚正确的实现步骤,再说说怎么排查没生效的情况:
要让api.appservice1.azurewebsites.net指向apiappservice2的API,核心是DNS解析+目标App Service的域名绑定,缺一不可:
先确认目标App Service的权限支持
首先得保证apiappservice2的定价层是Basic及以上(Free层不允许绑定自定义域名),如果是Free层,先升级到符合要求的层级。在目标App Service上完成域名绑定
这是很多人容易漏掉的关键步骤:- 打开Azure门户,进入
apiappservice2的管理页面 - 左侧菜单选择「自定义域名」,点击「添加自定义域名」
- 输入要绑定的子域名
api.appservice1.azurewebsites.net - 按照页面提示生成所有权验证记录(通常是TXT或CNAME),把这条记录添加到
appservice1对应的DNS Zone里 - 等待几分钟后点击「验证」,验证通过后完成绑定操作
- 打开Azure门户,进入
配置DNS Zone的CNAME记录
在appservice1的DNS Zone中添加一条CNAME记录:- 名称:
api - 类型:CNAME
- 值:
apiappservice2.azurewebsites.net - TTL保持默认3600即可(如果想快速生效可以设短一点,比如300)
- 名称:
如果配置后几天都没生效,按照下面的步骤逐一排查:
检查域名绑定状态
回到apiappservice2的「自定义域名」页面,确认api.appservice1.azurewebsites.net的状态是「已绑定+已验证」。如果显示验证失败,重新生成验证记录并准确添加到DNS Zone,等待10-15分钟后重试验证。验证DNS记录是否真的生效
用本地命令行工具测试解析结果:- Windows:打开命令提示符,执行
nslookup api.appservice1.azurewebsites.net,查看返回的CNAME是否指向apiappservice2.azurewebsites.net - macOS/Linux:终端执行
dig api.appservice1.azurewebsites.net CNAME,检查输出的CNAME值是否正确
如果解析结果不对,要么是DNS记录配置有误(比如名称写错、值填错),要么是TTL缓存还没过期(等够时间或者清空本地DNS缓存试试)
- Windows:打开命令提示符,执行
检查SSL证书(如果用HTTPS访问)
如果你需要通过HTTPS访问子域名,必须在apiappservice2上为该域名绑定SSL证书:- 在「自定义域名」页面找到绑定的子域名,点击「添加SSL绑定」
- 可以选择Azure提供的免费Managed证书(需要先为该域名申请),或者上传自己的证书
没有绑定证书的话,HTTPS访问会报错,看起来就像配置没生效
排查应用内部的重定向逻辑
检查apiappservice2的应用代码或配置文件(比如web.config、nginx.conf),有没有强制重定向到原域名apiappservice2.azurewebsites.net的规则,如果有,需要修改这些规则允许子域名访问确认DNS Zone的关联关系
检查appservice1的DNS Zone是否正确关联到了对应的域名,确保你添加记录的Zone是Azure用来解析appservice1.azurewebsites.net的那个Zone
内容的提问来源于stack exchange,提问作者Sean

