如何通过CloudFlare DNS将子域名解析至另一网站(不跳转)?
嘿,我来帮你搞定这个问题!
核心答案
仅靠基础DNS记录(不配合其他服务)没法直接满足需求,但结合Cloudflare的功能或者Google Cloud的自定义域名配置,完全可以实现admin.root.com指向你的App Engine管理页面且URL保持不变的效果——不需要任何用户跳转。
下面分两种可行方案详细说明:
方案1:用Cloudflare反向代理(无需在GCP配置自定义域名)
这种方式利用Cloudflare的代理功能转发流量,同时保持用户访问的URL不变:
- 登录Cloudflare后台,进入你的域名DNS管理界面
- 添加一条
CNAME记录:
- 名称:
admin(对应子域名admin.root.com) - 目标:填写你的App Engine服务的默认域名,格式是
[你的GCP项目ID].uc.r.appspot.com(可以在GCP App Engine控制台的「设置」->「自定义域名」里找到这个地址) - 关键操作:把记录旁边的云朵图标改成橙色(启用Cloudflare代理),不要用灰色的「仅DNS解析」
- 添加一条
- (可选但推荐)配置请求头转发:
如果你的App Engine服务只接受来自自身域名的请求,需要在Cloudflare的「规则」->「转换规则」中添加一条「修改请求头」规则:
- 匹配条件:
Host等于admin.root.com - 操作:设置
Host头为你的App Engine默认域名(比如your-project-id.uc.r.appspot.com)
- (可选但推荐)配置请求头转发:
- 等待1-5分钟DNS生效,访问
admin.root.com就能看到你的管理页面,URL完全保持不变。
- 等待1-5分钟DNS生效,访问
方案2:在GCP配置自定义域名(纯DNS解析即可)
这种方式让App Engine直接识别admin.root.com作为合法域名,之后通过纯DNS解析就能实现需求:
- 登录GCP控制台,进入App Engine的「设置」->「自定义域名」页面
- 点击「添加自定义域名」,输入
admin.root.com,按照提示完成域名所有权验证:
因为你的域名托管在Cloudflare,选择「DNS验证」,GCP会给你一条TXT记录,你需要在Cloudflare的DNS管理中添加这条记录
- 点击「添加自定义域名」,输入
- 验证通过后,GCP会给你一条CNAME记录的目标地址(类似
ghs.googlehosted.com或者特定的App Engine域名)
- 验证通过后,GCP会给你一条CNAME记录的目标地址(类似
- 回到Cloudflare,添加一条
CNAME记录:
- 名称:
admin - 目标:填写GCP提供的CNAME地址
- 云朵图标可以选灰色(仅DNS)或橙色(Cloudflare代理,额外获得CDN和安全防护)
- 回到Cloudflare,添加一条
- 等待DNS生效后,访问
admin.root.com即可直接打开管理页面,URL无变化。
- 等待DNS生效后,访问
为什么纯基础DNS不行?
如果只使用灰色云朵的CNAME记录(仅DNS解析),却不在GCP配置自定义域名,用户访问admin.root.com时,浏览器会直接向App Engine的服务器发送请求,但App Engine的负载均衡器会检查请求的Host头——如果这个Host不是它已识别的域名(默认域名或已配置的自定义域名),就会返回错误页面,所以必须通过上述两种方式之一解决这个问题。
内容的提问来源于stack exchange,提问作者Edgar Derby




