Heroku自定义api子域名访问404问题排查求助
根据你遇到的问题,我整理了几个常见的排查方向,帮你定位问题所在:
确认DNS记录是否已正确生效
新配置的CNAME记录可能存在DNS缓存延迟,你可以通过终端命令检查当前DNS解析结果:nslookup api.stickyhabits.app # 或者使用dig命令 dig api.stickyhabits.app检查返回的目标地址是否和Heroku提供的
mydnstarget完全一致。如果不一致,要么是Netlify的CNAME配置有误,要么是DNS缓存还未更新(TTL设置不同,生效时间可能从几分钟到几小时不等)。核对Netlify的CNAME配置细节
确保在Netlify DNS中,你创建的CNAME记录:- 主机名填写的是
api(而非完整域名api.stickyhabits.app) - 目标地址完全复制了Heroku提供的DNS目标(注意不要有多余空格、拼写错误)
如果主机名填错,会导致解析到错误的域名,自然无法到达你的Heroku应用。
- 主机名填写的是
验证Heroku域名绑定的应用正确性
执行heroku domains -a myapp时,确认myapp是你实际部署的应用名称。有时候可能误将子域名绑定到了其他Heroku应用上,导致请求被路由到错误的应用(而该应用没有对应路由,出现404),此时你的目标应用日志当然不会有请求记录。检查SSL证书配置问题
如果你的自定义域名启用了HTTPS,需确保Heroku已为该域名配置了有效SSL证书。你可以尝试访问http://api.stickyhabits.app(注意HTTP而非HTTPS),如果HTTP请求能到达应用日志,说明问题出在SSL证书配置上,需要在Heroku后台为该自定义域名启用并配置SSL证书。排查Netlify的CDN/页面规则干扰
Netlify自带CDN功能,如果你设置了页面规则或重定向规则,可能会拦截api子域名的请求。检查Netlify后台的“页面规则”选项,确保没有针对api.stickyhabits.app的重定向或缓存规则,导致请求未转发到Heroku。
内容的提问来源于stack exchange,提问作者David B.

