Cloudflare for SaaS自定义主机名触发522连接超时错误
解决Cloudflare for SaaS + Heroku Rails应用的522超时错误
针对你遇到的自定义域名访问出现Cloudflare 522错误的问题,按以下步骤排查:
1. 确认Fallback Origin配置正确性
直接访问proxy-fallback.saastool.com也报错,说明Fallback Origin的指向存在问题:
- 登录Cloudflare后台,进入「Cloudflare for SaaS」设置,检查Fallback Origin是否设置为你正常工作的Heroku应用域名(比如
app.saastool.com),不要使用Heroku的IP地址(Heroku IP是动态的,无法稳定指向)。 - 确保Fallback Origin的URL使用
https://开头(如果Heroku应用启用了SSL)。
2. 验证自定义主机名的DNS与代理状态
- 检查
portal.customerdomain.com的CNAME记录:必须指向Cloudflare提供的CNAME目标(而非直接指向Fallback Origin),且记录的云图标为橙色(代理模式),灰色(仅DNS)会导致流量不经过Cloudflare,无法触发SaaS路由逻辑。 - 确认自定义主机名在Cloudflare后台的「自定义主机名」列表中状态为已验证,未验证的主机名无法正常路由。
3. 配置Heroku允许Cloudflare IP访问
Heroku的默认防火墙可能拦截Cloudflare的代理流量,导致连接超时:
- 获取Cloudflare官方IP段,在Heroku应用的「Settings」→「Config Vars」中添加
TRUSTED_PROXIES变量,值为Cloudflare的IP段(逗号分隔)。 - 在Rails应用中配置
config.action_dispatch.trusted_proxies,将Cloudflare IP加入信任列表,确保应用能正确识别代理请求。
4. 检查SSL/TLS模式匹配
- Cloudflare的SSL/TLS模式需与Heroku应用的SSL状态匹配:
- 如果Heroku应用有SSL证书(通过Heroku SSL或自定义证书),设置Cloudflare的SSL模式为完全;
- 如果Heroku应用仅支持HTTP,设置为灵活(不推荐生产环境使用)。
- 确保Cloudflare为自定义主机名自动颁发的SSL证书状态正常,无过期或未验证情况。
5. 排查DNS解析与缓存
- 使用
dig portal.customerdomain.com或nslookup portal.customerdomain.com命令,确认解析结果为Cloudflare的IP地址,而非旧的DNS记录。 - 清除本地DNS缓存(Windows执行
ipconfig /flushdns,Mac执行sudo dscacheutil -flushcache),切换网络测试,排除缓存干扰。
6. 查看Heroku应用日志
执行命令heroku logs --tail实时查看日志,检查是否有来自Cloudflare IP的请求到达应用:
- 如果没有看到请求记录,说明流量未通过Cloudflare路由到Heroku,回到步骤2检查DNS和代理状态;
- 如果看到请求被拒绝,说明Heroku防火墙或应用配置拦截了流量,回到步骤3调整信任设置。
内容的提问来源于stack exchange,提问作者Emmet Gibney
相关产品推荐
相关产品推荐

