东莞网络推广公司

东莞企信网络专业提供百度爱采购、亿企宝、seo推广、小程序等各类网络推广服务。

Cloudflare CDN

Cloudflare CDN 时遇到 502 Bad Gateway 错误,以下是针对 CDN 场景的排查思路和解决方案:


常见原因与解决方法

1. 源站服务异常(根本原因)

  • 现象:即使绕过 Cloudflare(直接访问源站 IP),依然返回 502。

  • 解决

    1. 检查源站服务状态(如 Nginx、Apache、PHP-FPM、Node.js ):

      bash复制systemctl status nginx 
      systemctl status php-fpm
    2. 验证端口监听

      bash复制ss -tuln | grep 80    # 确保 80/443 端口监听ss -tuln | grep 9000  # PHP-FPM 默认端口
    3. 查看源站日志

      bash复制tail -f /var/log/nginx/error.log 
      tail -f /var/log/php-fpm.log

2. Cloudflare 无法连接源站

  • 现象:直接访问源站正常,但通过 Cloudflare 域名访问时 502。

  • 解决

    • Cloudflare 的 SSL 模式需与源站证书匹配:

    • 如果使用 Strict 模式,但源站证书无效,会导致 502。

    • Flexible:源站无需证书,但需关闭 HTTPS 强制跳转。

    • Full/Strict:源站必须配置有效证书。

    • 源站服务器防火墙(如 UFWiptables)需允许 Cloudflare 的 IP 段:

      bash复制# 下载 Cloudflare 官方 IP 列表并添加规则 curl https://www.cloudflare.com/ips-v4  > cloudflare_ips.txt 
      for ip in $(cat cloudflare_ips.txt);  do ufw allow from $ip; done
    • SELinux/AppArmor:确保未限制 Web 服务访问。

    • 登录 Cloudflare → 确认域名解析记录的 Proxy status 已开启(橙色云图标)。

    • 确保 A 记录 指向正确的源站 IP。

      1. 检查 DNS 设置

      2. 验证防火墙规则

      3. 检查 SSL/TLS 设置

    3. 缓存或代理设置问题

    • 现象:部分请求正常,部分请求 502,且问题随机出现。

    • 解决

      • 如果使用自定义缓存规则(如 Page Rules),可能导致异常缓存。

      • 暂时关闭 Cloudflare 代理(灰色云图标),直接访问源站测试。

      • 登录 Cloudflare → Caching → 清除全部缓存。

        1. 清除 Cloudflare 缓存

        2. 禁用代理临时排查

        3. 检查缓存规则冲突

      4. 源站性能瓶颈

      • 现象:大文件上传/下载时通过 Cloudflare 返回 502,直接访问正常。

      • 解决

        • 检查 CPU/内存占用率,确保源站能处理高并发请求。

        • 对静态文件(如 .iso.zip)设置较长缓存时间,减少回源请求。

        1. 调整源站超时设置(针对大文件):

          nginx复制# Nginx 配置示例proxy_read_timeout 300s;proxy_send_timeout 300s; 
          fastcgi_read_timeout 300s;
        2. 优化 Cloudflare 缓存策略

        3. 升级源站资源


      关键排查步骤

      1. 直接访问源站测试

      bash复制curl -I http://源站IP# 如果返回 502,则问题出在源站服务本身(与 Cloudflare 无关)。

      2. 检查 Cloudflare 状态面板

      • 登录 Cloudflare → 查看 Overview 页面是否有红色警告(如证书过期、API 限流等)。

      3. 日志分析

      • Cloudflare 日志(需 Pro 计划以上):

        • 登录 Cloudflare → Analytics → HTTP 标签,查看 502 请求的详细信息。

      • 源站访问日志

        bash复制tail -f /var/log/nginx/access.log  
        # 注意 Cloudflare 的 User-Agent 和 IP(通常为 CF-Connecting-IP)

      4. 检查 SSL/TLS 握手

      • 使用 openssl 测试源站证书:

        bash复制openssl s_client -connect 源站IP:443# 如果证书链不完整或过期,会导致 Cloudflare SSL 模式失败。

      推荐配置示例

      Nginx 配置(兼容 Cloudflare)

      nginx复制server {    listen 80;    server_name yourdomain.com; 
           # 强制跳转 HTTPS(仅当 Cloudflare 使用 Flexible 模式时)    return 301 https://$host$request_uri; 
      } server {    listen 443 ssl; 
          server_name yourdomain.com;  
           ssl_certificate /path/to/your/fullchain.pem;   # 源站证书(Full/Strict 模式)    ssl_certificate_key /path/to/your/privkey.pem; 
           location / {        proxy_pass http://127.0.0.1:3000;  # 后端服务         proxy_set_header Host $host; 
              proxy_set_header X-Real-IP $remote_addr; 
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
              proxy_set_header X-Forwarded-Proto $scheme;         # Cloudflare 必须的头信息        proxy_set_header CF-Connecting-IP $http_cf_connecting_ip;    } 
      }

      Cloudflare SSL 设置建议

      场景SSL 模式源站要求
      源站无证书Flexible关闭 HTTPS 强制跳转
      源站有自签名证书Full允许无效证书
      源站有有效证书Full (Strict)证书需由 CA 签名

      快速验证步骤

      bash复制# 1. 直接访问源站 IPcurl -I http://源站IP 
      # 2. 通过 Cloudflare 域名访问curl -I https://yourdomain.com  --resolve yourdomain.com:443: 源站IP# 3. 检查 Cloudflare 解析 dig +short yourdomain.com  @1.1.1.1

      总结

      问题类型 上一篇文章 : 蓝奏云 下一篇文章 : dns修复工具一键修复
      cache
      Processed in 0.017748 Second.