标签: cloudflare

  • 把域名从 Namecheap 转移到 Cloudflare

    本文记录我把域名从 Namecheap 转移到 Cloudflare 的过程。其实这类文章之前已经写过一篇类似的了。但可以水一篇,我还是挺开心的。

    最近有朋友反映说我的网站打不开了或者访问速度很慢,我自己测了下,发现确实移动和联通网络下访问很慢。但我还是太佛系了,一直没去管这件事。结果今天我自己访问网站打不开了。问了几个朋友,他们也反馈说打不开了。这…..怪不得最近流量一直下滑啊。终于是找到原因了。

    原因

    原因我倒是猜出来了,因为我目前使用的是 Hostinger 提供的 CDN,当时开启这个功能的时候还是对网速有一定积极作用的,而且也可以缓存我的图片。但是现在可能就是 CDN 的问题,导致我的网站打不开。

    短时间内,就先用Cloudflare 的CDN吧,虽然有点看运气。但是起码比 Hostinger 要好。我其他几个使用 Cloudflare CDN的网站,在国内访问速度还不错。

    其实使用 Cloudflare CDN 只要使用 Cloudflare 解析域名就好了。但我想着方便管理,不如直接把域名转过去。

    域名转移步骤

    1️⃣先把域名解析到Cloudflare去。去Cloudflare 添加域名,它会分析你现有的DNS,把它们全复制过来,然后你需要把Nameservers 改到 Cloudflare去。

    2️⃣去 Namecheap 修改域名的 Nameservers 到Cloudflare。

    3️⃣在 Namecheap 解锁域名。点击 “Sharing & Transfer”,然后找到下方的 “Domain Lock”,点击“Unlock”。

    4️⃣回到 Cloudflare,选择“域注册”→ “转移域”。这时候你就会发现你可以转移域名了。点击“确认域”。

    5️⃣回到刚才 Namecheap的页面,在解锁域名的旁边有一个 AUTH CODE 的按钮,点击之后会发送一封邮件,里面包含你的授权码。

    6️⃣在 Cloudflare 中输入授权码,之后就是付款环节,输入你的信息和付款信息。

    7️⃣付款完成后,你邮箱里会收到 Namecheap 的邮件,询问你想立即转移或者取消转移。毫无疑问我选择加速。

    8️⃣点击链接之后会出现一个页面,有 Approve 和 Reject 按钮。点击 Approve 即可。域名转移成功。

  • 当网站陷入了人机验证的死循环,怎么办?

    今天在问 Gemini,为什么同样是用的 Cloudflare CDN,别人在国内的解析速度就是比我快。AI 列了很多原因,有可能人家是付费玩家,使用了优选IP,或者是智能DNS。

    除此之外,还会有一些设置的问题。例如:

    • TLS 版本: 对方可能强制开启了 TLS 1.3 和 0-RTT(零往返时间恢复),减少了 SSL 握手的往返次数。
    • HTTP/3 (QUIC): CF 支持 QUIC 协议(基于 UDP)。在国内高丢包的网络环境下,QUIC 比传统的 TCP 抗丢包能力强很多,能显著减少“转圈圈”的时间。
    • 缓存规则 (Cache Rules): 对方可能配置了极其激进的缓存策略(比如“Cache Everything”),把 HTML 页面也缓存了。如果用户访问时命中缓存,CF 直接返回数据,不再回源站请求,速度也会快很多。

    在 Gemini 的指导下,我开启了0-RTT,最低TLS版本设为了1.2,开启了Early Hints。最后还配置了缓存规则,让 Cloudflare 缓存 Cache Everything(缓存所有内容)。

    然后问题就来了,我突然发现访问网站首页时会蹦出人机验证,而且不管怎么弄,就一直卡在人机验证这了。

    因为我发现只有首页弹,内页不弹。把这个情况告诉 Geimini 之后,它一下就给我找到了原因,有点好笑。

    问题的根源在于我开启了 Cloudflare 的 Cache Everything,并且配置了缓存规则。但是 CF 的缓存有点笨,它把所有页面(只要有人访问的页面)都缓存下来了。然后好巧不巧,在我清除了所有的缓存之后,又在我访问自己的网站首页之前,Cloudflare 恰好拦截过某次访问,生成了一个“验证页面”。然后,我设置的 Cloudflare 页面规则 (Page Rule) 把这个“验证页面”当成正常的首页 HTML 给缓存了。

    结果就是:之后访客访问首页,Cloudflare 根本没去检查他们是不是机器人,而是直接从缓存里把那个“旧的验证页面”甩给了访客。访客点击验证,提交给服务器,服务器一脸懵逼(因为没有发起新的验证请求),导致无限循环。

    解决办法:直接删掉 Cloudflare 的缓存规则,不要它缓存 HTML,而把这个任务交给 LiteSpeed。

    因为 Cloudflare 的缓存有可能会把我登录之后的页面缓存下来。而且还容易造成更新不同步(发了新文章,LiteSpeed 插件清除了服务器缓存,但 Cloudflare 边缘节点还存着旧页面。用户看到的依然是旧网站。)

    所以最终我是在 LiteSpeed 的设置中连接了 Cloudflare 的 API,这样以后发布新文章、修改 CSS 或点击 LiteSpeed 的“清除缓存”时,插件会自动发送指令给 Cloudflare,让其把旧缓存也顺便清掉。

  • Cloudflare 怎么配置 301 重定向

    本文记录下如何在 Cloudflare 上将旧域名设置 301 跳转到新域名。

    今天有个旧域名不用了,改用新域名,想做个301跳转。以往都是在 WordPress中用插件配置的,也改过 .htacess 文件。但这个域名是挂在 Cloudflare 上的,还是去网上搜了下方法。不过搜到的教程有点久了,所以记录一下。

    打开 Cloudflare 规则界面

    现在 Cloudflare 设置 301 跳转有 2 个方法:“Redirect Rules”(重定向规则)或传统的“Page Rules”(页面规则)。我使用的是传统方式。

    1. 登录 Cloudflare 仪表盘,选择旧域名。
    2. 点击左侧的菜单,选择规则。
    Cloudflare 规则

    Page Rules 设置 301 跳转

    Page Rules 设置 301 有个限制:免费计划只能设置 3 条 Rules。

    1. 在左侧导航栏中,点击“规则” > “页面规则”。

    创建页面规则 Cloudflare

    2. 点击“创建页面规则”。

    • 在 URL(必需) 字段中,输入旧域名。例如 olddomain.com/*(这里的 * 号表示匹配所有路径)。
    • 点击选取设置(必需),选择“转发 URL”。状态代码选择“301 – 永久重定向”。
    • 输入目标 URL (必需)填写新域名:https://newdomain.com/$1。其中 $1 的意思会保留旧 URL 的路径。
    • 点击“保存和部署页面规则”,等待几秒钟生效。
    创建页面规则 Cloudflare

    使用 Redirect Rules 设置 301 跳转

    这个是 Cloudflare 提供的较新功能,功能更强大,有很多预设的模板可供选择。

    1. 在左侧导航栏中,点击“规则” > “概述”。
    2. 在模板中选择“重定向到其他域”。

    Cloudflare 规则概述

    3. 给规则起一个名字。(你自己分得清这是干嘛的就行)
    4. 选择通配符模式。
    – 请求 URL:输入你的旧域名,例如:olddomain.com*
    – 目标 URL:输入你的新域名,例如:https://你的域名{$1}
    – 状态码:301
    5. 点击“部署”,稍等几秒。

    Cloudflare 创建重定向规则

    常见问题

    Q:我设置好了,但是旧域名打不开了。

    A:确保你的旧域名在 Cloudflare 的 DNS 中添加了 A 记录或 CNAME 记录,并启用了代理(橙色云图标)。

    Q:我选择了重定向规则模式,设置了 $1,但是没生效。

    A:重定向规则模式下是 ${1},不是$1。我就写错了,导致重定向不成功。

    总结

    我自己选择了传统模式,因为当时在写${1}的时候写成$1了,就一直出问题,就放弃了。后来才发现是自己写错了。

    • 页面规则免费计划只有3条,如果需要更多重定向,就要考虑升级计划或使用重定向规则。
    • 重定向规则目标 URL 后是${1}。
    • 确保旧域名在 Cloudflare 的 DNS 中添加了 A 记录或 CNAME 记录,并启用了代理(橙色云图标)。
    • 确保旧域名启用了 HTTPS(在“SSL/TLS”设置中选择“Full”或“Flexible”模式),否则 HTTP 到 HTTPS 的重定向可能失败。
    • 部署后可以使用 curl -I http://olddomain.com 测试。