Cloudflare Traffic下健康检查报403响应码不匹配无法复现问题咨询
问题原因分析
- 请求特征被拦截:Cloudflare健康检查请求带有固定的
User-Agent标识(默认是Cloudflare-Healthchecks/1.0),且来源IP属于Cloudflare公开的健康检查专用IP段。如果你的Cloudflare WAF规则、速率限制规则,或者源站的安全插件、防火墙、安全组配置了对应特征的拦截规则,就会直接返回403响应码,而普通浏览器请求的UA、IP都不在拦截范围内,所以返回200。 - 请求头配置不匹配:浏览器访问站点时会自动携带完整的请求头(包括Cookie、Accept、Referer、用户会话信息等),如果你的源站配置了特定请求头校验、会话校验逻辑,而Cloudflare健康检查默认不会携带这些自定义头/会话信息,就会触发源站的权限校验失败返回403。
- 健康检查配置异常:如果健康检查配置的请求路径、请求方法和你浏览器测试的路径不一致,比如健康检查指向了需要管理员权限的后台路径、POST方法的接口,也会出现403错误,和浏览器访问根路径的200响应形成差异。
- 地域访问限制:部分站点会配置地域访问限制,仅放开用户所在地区的IP访问权限,Cloudflare健康检查节点可能分布在你未放开权限的地区,请求会被源站拦截返回403。
排查解决步骤
- 先查看Cloudflare WAF的事件日志,过滤状态码为403的请求,确认健康检查请求是否被Cloudflare侧规则拦截,若是则将Cloudflare公开的健康检查IP段加入白名单。
- 核对健康检查的配置参数,确认请求路径、请求方法、期望响应码配置正确,若源站需要特定请求头、基础认证信息,需要在健康检查配置中手动添加对应参数。
- 登录源站查看Web服务器(Nginx/Apache等)的访问日志,定位健康检查IP对应的403请求记录,确认是否被源站侧的安全插件、防火墙规则拦截,若是则将健康检查IP段加入源站白名单。
- 可以用curl命令模拟健康检查请求复现问题,参考命令:
curl -I -A "Cloudflare-Healthchecks/1.0" https://dealsfinders.blog/你的健康检查路径,根据返回结果快速定位根因。
内容的提问来源于stack exchange,提问作者Shanmugapriya Selvakumar
相关产品推荐
相关产品推荐

