很多外贸网站的域名都托管在Cloudflare上,用它的免费CDN和防护。网站放在Cloudways上,同样可以接入免费的Cloudflare,但有几个地方和普通主机不太一样,顺序搞错了,就会遇到“重定向次数过多”、证书报错这类问题。
本文讲的是免费版的Cloudflare。Cloudways自己还有一个付费的Cloudflare Enterprise插件(每个域名每月$4.99起),功能更多、设置更简单,两者的区别见《Cloudways网站怎么加速?》。两者二选一,不能同时用。
免费Cloudflare能做什么?
- DNS解析:速度快,修改记录生效也快;
- CDN:缓存图片、CSS、JS这些静态文件,海外访客从最近的节点获取;
- 安全防护:隐藏服务器的真实IP,挡住一部分恶意流量和攻击;
- 免费SSL:访客和Cloudflare之间的HTTPS。
免费版默认不缓存网页本身(HTML),所以对TTFB的改善有限,主要是加快静态文件的加载。想缓存整个页面,要么用Cloudflare Enterprise插件,要么自己设置缓存规则(下文会讲风险)。
CDN的原理见《什么是CDN?》。
第一步:把域名接入Cloudflare
如果域名还没有接入Cloudflare:
- 注册Cloudflare账号,点击「添加域」,输入你的域名,选择Free计划;
- Cloudflare会扫描域名现有的DNS记录,核对一遍,特别是邮箱相关的MX、TXT记录不要漏掉;
- 到域名注册商那里,把域名的Nameserver改成Cloudflare给的两个地址;
- 等Cloudflare显示域名已生效(一般几分钟到几小时)。
Nameserver是什么、怎么改,见《Nameserver是什么?》。
第二步:添加DNS记录
在Cloudflare的「DNS」→「记录」里,添加网站的解析:
| 类型 | 名称 | 内容 | 代理状态 |
|---|---|---|---|
| A | @ | Cloudways服务器的Public IP | 先设为“仅DNS”(灰色云朵) |
| A | www | Cloudways服务器的Public IP | 先设为“仅DNS”(灰色云朵) |
服务器的IP在Cloudways服务器的「Master Credentials」或服务器列表里可以看到。
为什么先设为灰色? 因为下一步要在Cloudways上安装Let's Encrypt证书,Cloudways建议安装证书时先暂停Cloudflare的代理,避免验证失败。证书装好之后再打开代理。
其他记录的代理状态:
- MX记录不能开代理,Cloudflare也不允许给MX开代理;
- 邮箱用到的
mail、autodiscover等记录,以及各种验证用的TXT、CNAME记录,一律用“仅DNS”,开了代理邮箱会收发不了; - 只有网站本身的
@和www需要开代理。
邮箱的DNS记录见《Cloudways怎么用域名邮箱?》。
第三步:在Cloudways安装SSL证书
- 确认上一步的A记录已经生效(可以ping一下域名,看返回的是不是服务器IP);
- 在Cloudways网站的「Domain Management」里添加域名,设为主域名;
- 在网站的「SSL Certificate」里选择Let's Encrypt,填写邮箱和域名(
example.com和www.example.com),点击安装; - 安装成功后,打开「Auto Renewal」(自动续期);
- 在网站的设置里开启HTTPS跳转。
详细步骤见《Cloudways建站教程》里绑定域名和安装SSL的部分。
第四步:打开代理,设置SSL模式
证书装好之后:
- 回到Cloudflare的DNS记录,把
@和www两条A记录改成“已代理”(橙色云朵); - 进入Cloudflare的「SSL/TLS」→「概述」,把加密模式设为「完全(严格)」(Full (strict));
- 在Cloudflare清除一次缓存。
SSL模式为什么必须选“完全(严格)”?
Cloudflare的SSL模式决定了Cloudflare和你的服务器之间怎么连接:
| 模式 | Cloudflare到服务器 | 在Cloudways上 |
|---|---|---|
| 灵活(Flexible) | 用HTTP | 不要用,会导致“重定向次数过多” |
| 完全(Full) | 用HTTPS,不验证证书 | 能用,但不够安全 |
| 完全(严格)(Full (strict)) | 用HTTPS,验证证书 | 推荐 |
选“灵活”时,Cloudflare用HTTP访问你的服务器,而Cloudways开启了HTTPS跳转,又把请求跳回HTTPS,Cloudflare再用HTTP去访问……就这样无限循环,浏览器显示“重定向次数过多”。
服务器上已经装了有效的Let's Encrypt证书,直接用“完全(严格)”就可以。
另一种做法:Cloudflare源服务器证书
也可以不用Let's Encrypt,改用Cloudflare免费签发的源服务器证书(Origin Certificate),在Cloudways的「SSL Certificate」里以自定义证书(Custom SSL)的方式安装。好处是有效期很长,不用担心续期。
但这种证书只有Cloudflare认可。一旦关掉代理(变成灰色云朵)或者不用Cloudflare了,浏览器会直接报证书不受信任。所以一般网站用Let's Encrypt更省心。
第五步:缓存设置
默认设置就够用
Cloudflare免费版默认缓存静态文件,不缓存HTML,对WordPress来说是安全的设置。Cloudways服务器上已经有Breeze和Varnish做页面缓存,两者配合即可。
改了网站,前台没变化?
Breeze不能自动清除免费Cloudflare的缓存(Breeze的Cloudflare自动清除功能是给Cloudflare Enterprise插件用的)。所以换了图片、改了CSS之后,前台没变化的话:
- 在WordPress里清除Breeze缓存;
- 到Cloudflare的「缓存」→「配置」里点击「清除所有内容」(Purge Everything),或者只清除改动的文件网址;
- 清除浏览器缓存后再看。
做较大改动时,也可以先在Cloudflare的「概述」页面开启「开发模式」(Development Mode),临时跳过缓存,改完再关掉。
不建议随便开“缓存所有内容”
网上有一些教程教你用缓存规则让Cloudflare缓存所有内容(包括HTML),这样确实能降低TTFB,但风险也大:
- WordPress后台、购物车、结账、登录页面被缓存,会出现别人的购物车、登录状态错乱;
- 更新文章之后,访客很久都看不到新内容。
一定要做的话,要把/wp-admin、/wp-login.php、购物车、结账、我的账户等页面排除,并且对带登录Cookie的请求跳过缓存。对大多数网站来说,每月$4.99的Cloudflare Enterprise插件是更省心的整页缓存方案,它会随WordPress更新自动清除缓存。
常见报错和解决方法
“重定向次数过多”(ERR_TOO_MANY_REDIRECTS)
几乎都是因为Cloudflare的SSL模式选了“灵活”。改成“完全(严格)”,清除Cloudflare缓存和浏览器缓存。
521错误(Web server is down)
Cloudflare连不上你的服务器。检查Cloudways的服务器是否在运行、网站是否正常;如果在服务器上设置过防火墙或IP限制,确认没有挡住Cloudflare的IP。
522错误(Connection timed out)
Cloudflare连接服务器超时。常见原因是A记录填错了IP(比如填了旧主机的IP)、服务器负载太高没有响应。先核对A记录,再看Cloudways的「Monitoring」里服务器的资源情况。
525错误(SSL handshake failed)
Cloudflare和服务器之间的SSL握手失败,一般是服务器上没有装SSL证书,或者证书安装有问题。按上面的第三步重新安装证书。
526错误(Invalid SSL certificate)
SSL模式是“完全(严格)”,但服务器上的证书无效:过期了、域名不匹配,或者是自签名证书。检查Cloudways上的证书状态,重新安装或续期。
收不到邮件
检查MX记录是否还在、邮箱相关的记录是否被开了代理。接入Cloudflare时漏掉了MX记录,是最常见的原因。
WordPress后台或者表单提交被拦截
Cloudflare的安全设置(比如机器人防护、安全级别)有时会误拦正常请求。到Cloudflare的「安全性」→「事件」里查看被拦截的记录,针对性地调整规则。
常见问题
Let's Encrypt证书开了Cloudflare代理之后能自动续期吗?
一般可以正常自动续期。万一续期失败,临时把@和www改成灰色云朵,在Cloudways上手动续期,成功后再改回橙色。
用了Cloudflare,还需要Cloudways的Cloudflare Enterprise插件吗?
二选一。免费Cloudflare对大多数网站已经够用;客户遍布多个国家、对速度要求高的网站,可以考虑Enterprise插件。从免费Cloudflare切换到Enterprise插件之前,要先把DNS记录的代理关掉。
Cloudflare要开“始终使用HTTPS”吗?
可以开,和Cloudways的HTTPS跳转不冲突,前提是SSL模式是“完全”或“完全(严格)”。
开了Cloudflare,网站还是慢?
免费版不缓存HTML,TTFB主要还是取决于服务器和Breeze、Varnish的页面缓存。按《Cloudways网站怎么加速?》检查服务器层面的设置。
总结
Cloudways接入免费Cloudflare的顺序是:
- 域名接入Cloudflare,核对好MX等邮箱记录;
- 添加
@和www的A记录,先用灰色云朵; - 在Cloudways安装Let's Encrypt证书,开启HTTPS跳转;
- 把A记录改成橙色云朵,SSL模式设为“完全(严格)”。
记住两点:SSL模式不要选“灵活”;Breeze不会自动清除免费Cloudflare的缓存,改了网站要手动清除。
更多Cloudways的使用教程,可以查看《Cloudways主机教程汇总》。



