You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DigitalOcean负载均衡绑定Cloudflare子域名报522错误配置咨询

问题根因

Cloudflare返回522连接超时的核心原因是Cloudflare边缘节点无法和你配置的源站(DigitalOcean负载均衡公网IP)完成TCP连接建立,和后端Droplet的业务配置无直接关联,优先排查连通性、端口放通、加密模式匹配问题即可。

核心疑问答复
  • HTTP到HTTPS端口转发不是强制配置项,只需要和Cloudflare加密模式、负载均衡监听规则逻辑一致即可,配置不匹配才会引发访问异常。
  • 不需要强制在每台Droplet上用Certbot部署Let's Encrypt证书,是否配置取决于你选的SSL终止模式:
    • 若选择SSL终止在负载均衡层:负载均衡和后端Droplet之间走HTTP 80端口通信,Droplet不需要配置SSL证书,只需要在负载均衡上绑定域名证书即可,配置成本最低
    • 若选择端到端全链路加密:负载均衡和后端Droplet之间走HTTPS 443端口通信,此时才需要给每台Droplet配置SSL证书,证书可以用自签证书(负载均衡侧配置信任即可),不强制要求公网可信的Let's Encrypt证书
  • DigitalOcean负载均衡是全托管转发实例,不需要登录安装NGINX等软件:它的公网IP是流量入口,所有到达该IP的请求会先进入DO的负载均衡集群,再按照你预设的轮询规则转发到关联的后端Droplet对应端口,你之前直接访问LB IP能正常轮询切换,就是这套转发逻辑在生效。
落地配置步骤(优先选SSL终止在LB的方案,配置最简单、排错成本最低)

第一步:排查连通性,解决522报错

  1. 进入Cloudflare DNS配置页,找到api.example.com的A记录,临时将代理状态从橙色云(代理开启)切为灰色云(仅DNS解析),等待1分钟本地DNS缓存过期后,直接访问http://api.example.com,如果能正常显示NGINX页面,说明DNS解析本身正常,522是Cloudflare和负载均衡之间的端口/防火墙/加密模式不匹配导致。
  2. 切回橙色云代理状态,进入Cloudflare SSL/TLS配置页,临时将加密模式设置为「灵活」,再次访问域名,如果522消失,说明之前负载均衡没有放通443端口、或未配置443监听,Cloudflare默认用443连接源站超时。
  3. 进入DigitalOcean控制台,检查负载均衡绑定的云防火墙规则,确认入站方向放通80、443端口的所有来源(新手测试阶段先配置为0.0.0.0/0,测通后可收紧为仅放通Cloudflare IP段提升安全性),防火墙拦截是522报错的最常见诱因。

第二步:配置负载均衡转发规则

  1. 进入负载均衡的转发规则配置页,添加两条规则:
    • 规则1:HTTP协议80端口,转发到后端Droplet组的HTTP 80端口
    • 规则2:HTTPS协议443端口,转发到后端Droplet组的HTTP 80端口
  2. 在负载均衡的证书管理页,直接申请绑定api.example.com的Let's Encrypt免费证书,DO会自动完成证书续期,不需要手动操作。
  3. (可选)开启80端口强制跳转HTTPS:直接在负载均衡规则页开启HTTP重定向到HTTPS的开关即可,不需要在后端NGINX上重复配置跳转,避免多层规则冲突引发死循环。

第三步:配置后端Droplet的NGINX

  1. 每台Droplet上的NGINX只需要配置80端口的api.example.com server块即可,配置逻辑和你之前直接访问LB IP能正常返回内容的规则一致,不需要配置443端口监听,也不需要在Droplet上运行Certbot申请证书。
  2. 在NGINX的http配置块中添加以下规则,透传客户端真实IP,避免日志中全部记录负载均衡的IP:
    set_real_ip_from 0.0.0.0/0; # 生产环境可替换为DO负载均衡的内网IP段缩小信任范围
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;
    
  3. 执行配置校验和重载:
    nginx -t
    systemctl reload nginx
    
    两台Droplet都需要完成上述配置。

第四步:Cloudflare侧最终调优

  1. 回到Cloudflare SSL/TLS配置页,将加密模式调整为「完全」,不要选择「完全(严格)」——因为当前架构下负载均衡到Droplet走HTTP通信,严格模式会校验源站证书引发报错。
  2. 如果需要开启全局HTTPS强制跳转,直接在Cloudflare边缘证书配置页开启「Always Use HTTPS」即可,和负载均衡侧的跳转功能二选一开启,不要同时开。
  3. 多次刷新访问https://api.example.com,确认可以正常在两台Droplet之间轮询,无522、重定向循环等报错,配置即完成。

可选:端到端全链路加密配置(高安全要求场景使用)

如果需要负载均衡到Droplet之间也走加密HTTPS通信,在上述配置基础上调整以下内容即可:

  1. 每台Droplet上通过Certbot申请api.example.com的Let's Encrypt证书,配置NGINX监听443端口加载证书。
  2. 将负载均衡的HTTPS 443转发规则改为转发到后端Droplet的HTTPS 443端口。
  3. 将Cloudflare的加密模式调整为「完全(严格)」。

内容的提问来源于stack exchange,提问作者Ray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:33:39