使用AWS API Gateway搭配Cloudflare时出现521错误的原因
521错误的核心是Cloudflare无法和你的源站(API Gateway自定义域名)建立TCP连接,以下是几个实用的排查方向:
API Gateway自定义域名的CNAME记录未生效
确认域名服务商处的CNAME记录已正确指向API Gateway提供的域名(比如xxx.execute-api.region.amazonaws.com)。用命令验证:dig your-custom-domain.com CNAME确保返回的目标域名和API Gateway控制台显示的完全一致。
Cloudflare SSL/TLS模式与源站证书不匹配
若Cloudflare用的是「严格」SSL模式,要求源站(API Gateway)必须持有Cloudflare信任的证书。你需要确认:- 证书是在对应AWS区域的ACM生成,且已绑定到API Gateway自定义域名。
- 证书域名和你的自定义域名完全匹配(含通配符场景)。
可以先临时把Cloudflare SSL模式改成「灵活」测试,若错误消失,说明是证书信任问题,再调整回严格模式排查证书配置。
API Gateway资源策略限制了Cloudflare IP
检查API Gateway的资源策略,是否设置了IP白名单但未包含Cloudflare的所有出站IP段。需要把Cloudflare的IP批量加入允许列表,才能让Cloudflare正常访问源站。Cloudflare DNS代理状态异常
确认自定义域名在Cloudflare的DNS记录中,橙色云朵图标是开启状态(启用代理)。如果是灰色(仅DNS解析),Cloudflare不会处理流量,但521错误通常出现在代理模式下,需确认状态符合配置预期。API Gateway未完成阶段部署
确保你的API已经部署到对应阶段(比如prod),且自定义域名已关联正确的阶段。如果API没部署,源站本身无法响应请求,Cloudflare自然连不上。源站本身无法正常访问
用curl直接访问API Gateway的自定义域名,看是否能正常响应:curl -v https://your-api-gateway-custom-domain.com如果直接访问也失败,问题出在API Gateway本身,和Cloudflare无关。
内容的提问来源于stack exchange,提问作者Charlie Fish

