上一篇 下一篇 分享链接 返回 返回顶部

接入 Cloudflare 后,服务器这些配置一定要改

发布人:慈云数据-客服中心 发布时间:1 天前 阅读量:4

Cloudflare 对服务器有什么影响|附配置文件

在网站部署与运维过程中,Cloudflare 是一个非常常见的基础设施服务。很多站长、开发者或企业会把域名 DNS 接入 Cloudflare,然后开启 CDN、WAF、防 DDoS、SSL/TLS、缓存、访问规则等功能。这样做的好处很明显:网站访问速度可能变快,源站服务器暴露风险降低,抗攻击能力提升,HTTPS 配置更简单。但与此同时,Cloudflare 也会对服务器的访问链路、日志记录、真实 IP 获取、SSL 配置、缓存策略、安全策略等方面产生影响。

本文将系统说明 Cloudflare 对服务器的影响,并给出常见的 Nginx、Apache、防火墙、Docker、宝塔面板等配置示例,帮助你更稳定、安全地使用 Cloudflare。


一、Cloudflare 的基本工作原理

在未接入 Cloudflare 之前,用户访问网站的流程通常是:

用户浏览器 → DNS 解析到服务器 IP → 直接访问源站服务器

接入 Cloudflare 后,访问流程变为:

用户浏览器 → Cloudflare 边缘节点 → 源站服务器

也就是说,用户不再直接访问你的服务器,而是先访问 Cloudflare 的全球边缘节点。Cloudflare 会根据配置决定是否直接返回缓存内容,或者继续向你的服务器请求数据。

如果 Cloudflare 开启了代理模式,也就是 DNS 记录中显示橙色云朵,那么用户看到的是 Cloudflare 的 IP,而不是你的源站 IP。源站服务器只会接收到来自 Cloudflare 节点的请求。


二、Cloudflare 对服务器的主要影响

1. 源站真实 IP 被隐藏

Cloudflare 最大的作用之一是隐藏源站 IP。正常情况下,用户通过域名访问网站时,DNS 返回的是 Cloudflare 的 IP,而不是源站服务器的 IP。

这样可以降低以下风险:

  • 源站 IP 被直接扫描;
  • 攻击者绕过 CDN 直接攻击服务器;
  • 暴露服务器所在机房或云服务商信息;
  • 源站服务端口被恶意探测。

不过需要注意,Cloudflare 并不能百分百保证源站 IP 不泄露。如果你以前使用过真实 IP 解析域名,或者服务器上存在其他子域名直连源站,攻击者依然可能通过历史 DNS、证书透明日志、邮件头、错误配置等方式发现源站 IP。

因此,接入 Cloudflare 后,最好在服务器防火墙中只允许 Cloudflare IP 访问 80 和 443 端口,防止其他来源绕过 Cloudflare 直接访问源站。


2. 服务器访问日志中的 IP 会发生变化

接入 Cloudflare 后,服务器日志中默认记录的访问 IP 可能不再是用户真实 IP,而是 Cloudflare 节点 IP。例如 Nginx 日志中可能出现:

172.70.214.123 - - [01/Jan/2026:12:00:00 +0800] "GET / HTTP/1.1" 200

这个 IP 实际上是 Cloudflare 的边缘节点,而不是用户真实地址。

Cloudflare 会在请求头中传递用户真实 IP,常见字段包括:

CF-Connecting-IP
X-Forwarded-For
X-Real-IP

其中,CF-Connecting-IP 是 Cloudflare 官方推荐用于获取访客真实 IP 的字段。

如果不正确配置服务器,可能会产生以下问题:

  • 日志统计不准确;
  • 安全审计无法定位真实来源;
  • WordPress、Discuz、Laravel 等程序获取到错误 IP;
  • 登录限制、防刷策略失效;
  • Fail2ban、WAF、风控系统误封 Cloudflare 节点 IP。

因此,接入 Cloudflare 后,恢复访客真实 IP 是非常重要的一步。


3. SSL/TLS 配置方式会改变

Cloudflare 提供多种 SSL/TLS 模式,常见有:

模式 浏览器到 Cloudflare Cloudflare 到源站 是否推荐
Off HTTP HTTP 不推荐
Flexible HTTPS HTTP 不推荐
Full HTTPS HTTPS 一般可用
Full Strict HTTPS HTTPS 且验证证书 推荐

很多新手容易选择 Flexible 模式,因为它不要求源站配置 HTTPS。但这种模式存在明显问题:

  • 用户到 Cloudflare 是 HTTPS;
  • Cloudflare 到源站是 HTTP;
  • 源站无法感知真实 HTTPS;
  • 容易出现无限重定向;
  • 安全性不完整。

推荐使用 Full (strict) 模式,并在服务器上安装有效证书。证书可以使用 Let's Encrypt,也可以使用 Cloudflare Origin Certificate。


4. 缓存会影响源站压力与内容更新

Cloudflare 的缓存功能可以显著减少服务器请求压力。对于图片、CSS、JS、字体、静态 HTML 页面等资源,Cloudflare 可以直接在边缘节点返回内容,不必每次都访问源站。

这样带来的好处包括:

  • 降低服务器带宽消耗;
  • 提升全球访问速度;
  • 减少源站并发压力;
  • 提高网站抗突发流量能力;
  • 缓解部分爬虫访问压力。

但缓存也可能带来问题:

  • 页面更新后用户看到旧内容;
  • 后台接口被错误缓存;
  • 登录状态页面缓存异常;
  • 电商库存、价格信息不及时;
  • API 返回结果被缓存导致业务错误。

因此,缓存策略一定要根据业务类型合理配置。静态资源可以长期缓存,动态页面和 API 应谨慎缓存。


5. 防火墙与安全策略会变化

Cloudflare 本身提供 WAF、防 DDoS、Bot Fight Mode、Rate Limiting、安全等级、浏览器完整性检查等功能。开启后,部分恶意流量会在到达服务器前被拦截。

对服务器而言,这意味着:

  • 源站收到的恶意请求减少;
  • CC 攻击压力降低;
  • SQL 注入、XSS 等常见攻击可提前过滤;
  • 可以用 Cloudflare 规则限制地区、ASN、路径访问;
  • 源站安全配置可以与 Cloudflare 联动。

但也需要注意误拦截问题。例如某些接口、支付回调、API 客户端、搜索引擎爬虫,可能因为 Cloudflare 安全规则过严而被拦截。此时需要在 Cloudflare 中设置跳过规则或白名单。


三、Cloudflare 对不同类型服务器的影响

1. 对 Nginx 服务器的影响

Nginx 是最常见的 Web 服务器之一。接入 Cloudflare 后,主要需要处理真实 IP、HTTPS、反向代理头、缓存头等问题。

如果不配置真实 IP,Nginx 日志中会显示 Cloudflare IP。如果网站程序依赖 IP 判断用户身份,也会受到影响。

推荐配置 Nginx 的 real_ip_header,让 Nginx 从 CF-Connecting-IP 中读取访客真实 IP。


2. 对 Apache 服务器的影响

Apache 可以通过 mod_remoteip 模块恢复真实 IP。配置后,Apache 访问日志和后端程序会更容易获取真实访客地址。

需要注意的是,只有来自 Cloudflare IP 段的请求才应该信任 CF-Connecting-IP,否则攻击者可以伪造请求头。


3. 对应用程序的影响

很多程序会通过服务器变量获取用户 IP。例如:

  • PHP 中的 $_SERVER['REMOTE_ADDR']
  • Laravel 中的 $request->ip()
  • WordPress 中的评论 IP;
  • Node.js 中的 req.ip
  • Django 中的 request.META

如果服务器没有正确恢复真实 IP,这些程序可能获取到 Cloudflare 节点地址。对于登录风控、限流、防刷、评论审核、用户定位等功能都会造成影响。


4. 对防火墙的影响

源站服务器接入 Cloudflare 后,理论上应只允许 Cloudflare 节点访问 Web 端口。如果 80 和 443 对全网开放,攻击者一旦知道源站 IP,仍然可以绕过 Cloudflare 直接攻击服务器。

因此建议:

  • 22 SSH 端口仅允许管理员固定 IP;
  • 80/443 仅允许 Cloudflare IP 段;
  • 数据库端口禁止公网访问;
  • 面板端口限制 IP 或 VPN 访问;
  • 使用 Fail2ban 或安全组进一步加固。

四、Cloudflare 接入服务器后的优点

1. 提升网站访问速度

Cloudflare 在全球拥有大量边缘节点。当用户访问网站时,会连接到距离较近的节点。如果资源已经缓存,Cloudflare 可以直接返回内容,减少跨境或长距离访问延迟。

对于全球用户访问的网站,Cloudflare 的加速效果尤其明显。即使源站服务器位于单一区域,用户也可以通过边缘节点更快获取静态内容。


2. 降低服务器负载

静态资源被 Cloudflare 缓存后,服务器不需要每次都处理相同请求。图片、CSS、JS、字体文件等资源命中缓存后,会直接由 Cloudflare 返回。

服务器负载降低后,可以带来以下好处:

  • CPU 使用率下降;
  • 带宽费用降低;
  • PHP、Node.js、Java 后端压力减少;
  • 数据库访问减少;
  • 网站在高峰期更稳定。

3. 提升抗攻击能力

Cloudflare 可以在边缘层抵御大量恶意流量。对于普通服务器而言,DDoS 攻击可能直接打满带宽,导致网站无法访问。而使用 Cloudflare 后,大部分攻击流量会先进入 Cloudflare 网络,由 Cloudflare 进行清洗和拦截。

对于中小型网站来说,即使使用免费版 Cloudflare,也能获得一定程度的基础防护。


4. 简化 HTTPS 部署

Cloudflare 可以自动为域名签发边缘证书,使用户访问网站时使用 HTTPS。同时源站可以使用 Let's Encrypt 或 Cloudflare Origin Certificate 配置 HTTPS。

相比完全手动维护证书,Cloudflare 在证书续期、边缘 HTTPS、安全协议支持方面更加方便。


5. 提供丰富的安全与访问控制规则

Cloudflare 可以根据国家、IP、ASN、请求路径、User-Agent、请求方法等条件设置规则。例如:

  • 阻止特定国家访问后台;
  • 限制 /wp-login.php 登录频率;
  • 拦截恶意爬虫 User-Agent;
  • 对 API 路径设置限速;
  • 对后台路径启用额外验证;
  • 对特定路径绕过缓存。

这些能力可以让源站减少很多安全压力。


五、Cloudflare 可能带来的问题

1. 获取不到真实用户 IP

这是最常见问题。解决方法是配置 Web 服务器信任 Cloudflare IP,并从 CF-Connecting-IP 读取真实 IP。


2. SSL 模式错误导致循环跳转

如果 Cloudflare 使用 Flexible 模式,而源站或程序强制跳转 HTTPS,就可能出现无限重定向。

典型表现:

ERR_TOO_MANY_REDIRECTS

建议将 Cloudflare SSL/TLS 模式设置为:

Full (strict)

同时源站安装有效 HTTPS 证书。


3. 缓存导致页面不更新

如果页面被缓存,更新内容后用户可能仍看到旧页面。解决方法包括:

  • 清理 Cloudflare 缓存;
  • 设置合理 Cache-Control;
  • 对动态页面绕过缓存;
  • 使用版本号管理静态资源;
  • 对后台和接口禁用缓存。

4. 上传文件或接口超时

Cloudflare 对请求大小、连接时长、响应时间等有一定限制。免费版和不同套餐限制不同。某些大文件上传、长连接接口、慢响应接口可能受到影响。

解决方案:

  • 上传文件改走对象存储;
  • 后台任务异步处理;
  • API 缩短响应时间;
  • 大文件下载使用 R2、S3 或直连专用域名;
  • 长连接服务使用不经过 Cloudflare 代理的子域名。

5. 非 HTTP 服务无法直接代理

Cloudflare 免费版主要代理 HTTP/HTTPS 流量。SSH、数据库、普通 TCP 服务不能直接通过橙云代理,除非使用 Cloudflare Spectrum、Tunnel 或 Zero Trust 等服务。

因此,数据库、SSH、Redis、MQ 等服务不应依赖普通 CDN 代理暴露在公网。


六、Nginx 配置文件示例:恢复真实 IP

以下配置用于 Nginx 从 Cloudflare 获取真实访问 IP。

1. 创建 Cloudflare IP 配置文件

建议新建文件:

/etc/nginx/conf.d/cloudflare-real-ip.conf

内容如下:

# Cloudflare IPv4
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;

# Cloudflare IPv6
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2a06:98c0::/29;
set_real_ip_from 2c0f:f248::/32;

# 使用 Cloudflare 提供的真实客户端 IP 请求头
real_ip_header CF-Connecting-IP;

# 递归解析真实 IP
real_ip_recursive on;

然后检查配置并重载:

nginx -t
systemctl reload nginx

2. Nginx 站点配置示例

server {
    listen 80;
    server_name example.com www.example.com;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate     /etc/nginx/ssl/example.com/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/example.com/privkey.pem;

    access_log /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;

    root /var/www/example.com;
    index index.html index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~* \.(jpg|jpeg|png|gif|webp|svg|ico|css|js|woff|woff2|ttf)$ {
        expires 30d;
        add_header Cache-Control "public, max-age=2592000";
        try_files $uri =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        # 将真实协议传给后端
        fastcgi_param HTTPS on;
        fastcgi_param HTTP_X_FORWARDED_PROTO $scheme;
        fastcgi_param HTTP_CF_CONNECTING_IP $http_cf_connecting_ip;
    }
}

七、Apache 配置文件示例:恢复真实 IP

Apache 推荐使用 mod_remoteip 模块。

1. 启用模块

Ubuntu / Debian:

a2enmod remoteip
systemctl restart apache2

CentOS / Rocky Linux 通常模块已经包含,确认配置即可。


2. 添加 Cloudflare RemoteIP 配置

创建文件:

/etc/apache2/conf-available/cloudflare-remoteip.conf

内容如下:

RemoteIPHeader CF-Connecting-IP

RemoteIPTrustedProxy 173.245.48.0/20
RemoteIPTrustedProxy 103.21.244.0/22
RemoteIPTrustedProxy 103.22.200.0/22
RemoteIPTrustedProxy 103.31.4.0/22
RemoteIPTrustedProxy 141.101.64.0/18
RemoteIPTrustedProxy 108.162.192.0/18
RemoteIPTrustedProxy 190.93.240.0/20
RemoteIPTrustedProxy 188.114.96.0/20
RemoteIPTrustedProxy 197.234.240.0/22
RemoteIPTrustedProxy 198.41.128.0/17
RemoteIPTrustedProxy 162.158.0.0/15
RemoteIPTrustedProxy 104.16.0.0/13
RemoteIPTrustedProxy 104.24.0.0/14
RemoteIPTrustedProxy 172.64.0.0/13
RemoteIPTrustedProxy 131.0.72.0/22

RemoteIPTrustedProxy 2400:cb00::/32
RemoteIPTrustedProxy 2606:4700::/32
RemoteIPTrustedProxy 2803:f800::/32
RemoteIPTrustedProxy 2405:b500::/32
RemoteIPTrustedProxy 2405:8100::/32
RemoteIPTrustedProxy 2a06:98c0::/29
RemoteIPTrustedProxy 2c0f:f248::/32

启用配置:

a2enconf cloudflare-remoteip
systemctl reload apache2

八、防火墙配置:只允许 Cloudflare 访问源站

如果你已经确认所有 Web 流量都通过 Cloudflare 访问,可以限制服务器 80/443 端口只接受 Cloudflare IP。

注意:操作前请确保你仍然可以通过 SSH 登录服务器,避免把自己锁在外面。


1. UFW 配置示例

先允许 SSH:

ufw allow from 你的管理IP to any port 22 proto tcp

允许 Cloudflare IPv4 访问 80/443:

ufw allow from 173.245.48.0/20 to any port 80,443 proto tcp
ufw allow from 103.21.244.0/22 to any port 80,443 proto tcp
ufw allow from 103.22.200.0/22 to any port 80,443 proto tcp
ufw allow from 103.31.4.0/22 to any port 80,443 proto tcp
ufw allow from 141.101.64.0/18 to any port 80,443 proto tcp
ufw allow from 108.162.192.0/18 to any port 80,443 proto tcp
ufw allow from 190.93.240.0/20 to any port 80,443 proto tcp
ufw allow from 188.114.96.0/20 to any port 80,443 proto tcp
ufw allow from 197.234.240.0/22 to any port 80,443 proto tcp
ufw allow from 198.41.128.0/17 to any port 80,443 proto tcp
ufw allow from 162.158.0.0/15 to any port 80,443 proto tcp
ufw allow from 104.16.0.0/13 to any port 80,443 proto tcp
ufw allow from 104.24.0.0/14 to any port 80,443 proto tcp
ufw allow from 172.64.0.0/13 to any port 80,443 proto tcp
ufw allow from 131.0.72.0/22 to any port 80,443 proto tcp

默认拒绝其他访问:

ufw default deny incoming
ufw default allow outgoing
ufw enable
ufw status verbose

2. iptables 配置示例

iptables -A INPUT -p tcp -s 173.245.48.0/20 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 103.21.244.0/22 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 103.22.200.0/22 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 103.31.4.0/22 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 141.101.64.0/18 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 108.162.192.0/18 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 190.93.240.0/20 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 188.114.96.0/20 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 197.234.240.0/22 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 198.41.128.0/17 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 162.158.0.0/15 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 104.16.0.0/13 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 104.24.0.0/14 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 172.64.0.0/13 -m multiport --dports 80,443 -j ACCEPT
iptables -A INPUT -p tcp -s 131.0.72.0/22 -m multiport --dports 80,443 -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dports 80,443 -j DROP

九、Cloudflare 推荐配置

1. SSL/TLS 推荐配置

在 Cloudflare 后台建议设置:

SSL/TLS encryption mode: Full (strict)
Always Use HTTPS: On
Automatic HTTPS Rewrites: On
Minimum TLS Version: TLS 1.2
TLS 1.3: On

源站建议配置:

  • 安装有效 SSL 证书;
  • 禁用过时协议;
  • 开启 HTTP 到 HTTPS 跳转;
  • 使用 HSTS 前先确认全站 HTTPS 正常。

2. 缓存推荐配置

静态资源建议:

Browser Cache TTL: 1 month
Caching Level: Standard

动态页面建议:

Cache-Control: no-cache 或 no-store

后台路径建议绕过缓存,例如:

/wp-admin/*
/admin/*
/user/*
/api/*

3. 安全规则推荐

可以针对后台登录路径添加规则,例如 WordPress:

If URI Path equals /wp-login.php
Then Managed Challenge

或者限制后台地区访问:

If URI Path starts with /admin
And Country not equals CN
Then Block

如果你的网站有 API,可以对 API 设置速率限制,避免被刷接口。


十、WordPress 使用 Cloudflare 的注意事项

WordPress 接入 Cloudflare 后,常见问题包括:

  • 后台登录 IP 显示 Cloudflare IP;
  • HTTPS 识别异常;
  • 评论 IP 不真实;
  • 页面缓存导致登录状态错乱;
  • WooCommerce 购物车缓存异常;
  • 插件与 Cloudflare 缓存冲突。

建议配置:

  1. 服务器层恢复真实 IP;
  2. Cloudflare SSL 使用 Full Strict;
  3. 后台、登录、购物车、结账页绕过缓存;
  4. 静态资源长期缓存;
  5. 使用官方 Cloudflare 插件辅助清缓存;
  6. 不要对所有 HTML 页面盲目开启 Cache Everything。

WordPress 后台路径可设置绕过缓存:

/wp-admin/*
/wp-login.php
/cart/*
/checkout/*
/my-account/*

十一、Laravel / Node.js / Django 后端注意事项

如果你的应用运行在反向代理后面,除了 Nginx 恢复真实 IP 外,框架本身也要信任代理。

Laravel

Laravel 可在 TrustProxies 中配置代理信任。常见做法:

protected $proxies = '*';

protected $headers = \Illuminate\Http\Request::HEADER_X_FORWARDED_FOR |
                     \Illuminate\Http\Request::HEADER_X_FORWARDED_HOST |
                     \Illuminate\Http\Request::HEADER_X_FORWARDED_PORT |
                     \Illuminate\Http\Request::HEADER_X_FORWARDED_PROTO;

更安全的做法是只信任 Cloudflare IP 段。


Node.js Express

const express = require('express');
const app = express();

app.set('trust proxy', true);

app.get('/', (req, res) => {
  res.send(`Your IP is ${req.ip}`);
});

app.listen(3000);

如果你希望更严格,应只信任 Cloudflare 代理地址。


Django

settings.py 中配置:

USE_X_FORWARDED_HOST = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

同时确保 Nginx 正确传递请求头。


十二、Docker / 反向代理环境中的配置

如果网站运行在 Docker 中,Cloudflare 请求通常先到宿主机 Nginx,再转发到容器。此时要确保宿主机 Nginx 已恢复真实 IP,并将真实 IP 传给容器。

示例:

location / {
    proxy_pass http://127.0.0.1:3000;

    proxy_set_header Host $host;
    proxy_set_header Real-IP $remote_addr;
    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;
    proxy_set_header CF-Connecting-IP $http_cf_connecting_ip;
}

如果 Nginx 已经通过 real_ip_header CF-Connecting-IP$remote_addr 改为真实用户 IP,那么后端容器通过 X-Real-IPX-Forwarded-For 获取到的就是正确 IP。


十三、自动更新 Cloudflare IP 的脚本

Cloudflare IP 段可能会更新,虽然频率不高,但建议定期检查。可以使用脚本自动生成 Nginx 配置。

创建脚本:

nano /usr/local/bin/update-cloudflare-realip.sh

内容:

#!/bin/bash

CONF="/etc/nginx/conf.d/cloudflare-real-ip.conf"

echo "# Auto generated Cloudflare real IP config" > $CONF
echo "# Updated at: $(date)" >> $CONF

curl -s https://www.cloudflare.com/ips-v4 | while read ip; do
    echo "set_real_ip_from $ip;" >> $CONF
done

curl -s https://www.cloudflare.com/ips-v6 | while read ip; do
    echo "set_real_ip_from $ip;" >> $CONF
done

cat >> $CONF <

赋予执行权限:

chmod +x /usr/local/bin/update-cloudflare-realip.sh

添加定时任务:

crontab -e

加入:

0 3 * * 1 /usr/local/bin/update-cloudflare-realip.sh >/dev/null 2>&1

表示每周一凌晨 3 点自动更新。


十四、接入 Cloudflare 后的检查清单

接入完成后,建议逐项检查:

  • [ ] DNS 记录是否为橙色云朵代理模式;
  • [ ] Cloudflare SSL 是否设置为 Full Strict;
  • [ ] 源站是否安装有效 HTTPS 证书;
  • [ ] Nginx / Apache 是否恢复真实 IP;
  • [ ] 访问日志是否显示真实用户 IP;
  • [ ] 80/443 是否只允许 Cloudflare IP 访问;
  • [ ] 后台路径是否绕过缓存;
  • [ ] API 是否未被错误缓存;
  • [ ] 静态资源是否设置合理缓存时间;
  • [ ] 是否存在泄露源站 IP 的子域名;
  • [ ] SSH、数据库、Redis 是否未暴露公网;
  • [ ] Cloudflare 安全规则是否存在误拦截;
  • [ ] 是否配置监控和日志告警。

十五、总结

Cloudflare 对服务器的影响非常明显。它不仅改变了用户访问网站的网络链路,也会影响服务器日志、真实 IP 获取、SSL/TLS、缓存、防火墙、安全策略和应用程序行为。正确使用 Cloudflare,可以显著提升网站速度、降低服务器负载、隐藏源站 IP,并增强网站抗攻击能力。

但如果配置不当,也可能带来真实 IP 获取错误、HTTPS 循环跳转、缓存异常、接口超时、误拦截等问题。因此,接入 Cloudflare 后不能只在 DNS 中点亮橙色云朵,还需要同步完成服务器侧配置。

最关键的几项配置是:

  1. 使用 Full (strict) SSL 模式;
  2. 在 Nginx 或 Apache 中恢复真实访客 IP;
  3. 防火墙只允许 Cloudflare IP 访问 80/443;
  4. 动态页面、后台、API 谨慎缓存;
  5. 定期检查 Cloudflare IP 段和安全规则;
  6. 避免源站 IP 通过历史记录、子域名或其他服务泄露。

总体来说,Cloudflare 对服务器既是保护层,也是代理层。它能让服务器更安全、更轻量、更稳定,但前提是你必须理解它对访问链路和服务器配置造成的变化,并根据实际业务进行合理配置。

目录结构
全文