本文转载自https://blog.tanglu.me/cloudflare-configure
最后更新于2023/2/28
本篇文章会以我目前的能力,来尽量解释cloudflare每一个功能,肯定会有错误 欢迎指出
可以点击右侧目录调转到自己需要的章节
已学习:
website
- Overview
- Analytics & Logs
- DNS
- Email Routing
- SSL/TLS
- Security
- Access
- Caching
- Rules
- Network
domain Registration
Zero Trust
- Tunnels
R2
未学习:
最开始名称为”待学习”,想了一下有些误导就改了。即可能会让小伙伴认为需要将cloudflare发布的应用全部学习 其实如果你不是去cloudflare做工程师或者客服 这样是错误且完全没必要的。
主要是cloudflare提供的一些功能确实好用我才去了解并有了这篇笔记
website
- Workers Routes
- Custom Pages
- Apps
- Scrape Shield
- Rules
- Zaraz
- Web3
Turnstile
Zero Trust
- Applications
- Access Group
- Service Auth
Workers
- KV
- Queues
- D1
Pages
Stream
Images
Bulk Redirects
Websites
Overview
独立访问者:可能同一IP同一设备的每个APP的请求都算一个独立访问者,我也不是很确定
已缓存的百分比:字面意思,百分比越高 相对来说服务器的压力就越小
总数居:cloudflareCDN返回给客户的数据流量(不清楚是否包括CDN回源流量)
已缓存的数据:已经被cloudflareCDN缓存到CDN服务器的数据,用户请求到该数据时CDN不会向源服务器发送请求 而是直接从CDN缓存中取出数据 并返回给用户
Analytics & Logs
这个应该不需要设置什么 主要是分析恶意流量等
DNS
开启黄色小云朵(Proxied)表示使用cloudflareCDN,开启后该用户访问该域名会被cloudflare NameServer (如dana.ns.cloudflare.com)返回cloudflare的IP,可以实现隐藏服务器IP的目的
即 香港用户>cloudflare香港节点>cloudflare美国节点>我的美国服务器
关闭小云朵(DNS only),则不会启用cloudflareCDN,此时loudflare唯一能提供的服务 就是告诉运营商DNS服务器你的DNS记录信息,你想使用cloudflare提供的防火墙等功能都是需要开启黄色小云朵的
Email Routing
接收域名邮件服务+邮件转发,非常适合大量注册服务,不过这个无法回信 需要回信功能建议使用邮局
Custom addresses:设置你喜欢的一个邮箱,并为他们选择规则。比如我设置了两个邮箱”test@tanglu.cf“和”drop@tanglu.cf“,任何发往”test@tanglu.cf“的邮件信息都会转发到”tangluokex@gmail.com“,任何发往”drop@tanglu.cf“的邮件都会被丢弃
Catch-all address:收件地址为”*@tanglu.cf”格式(如”t2@tanglu.cf“)的信件且“Custom address”中无对应地址,cloudflare则会将”t2@tanglu.cf“收到的信发送给”tangluokex@gmail.com“
Destination addresses:可以在客户端接受邮件的地址
注:Email Routing无法转发二级域名的邮件,如收件域名为”test@mail.tanglu.cf“的信件无法被转发到”tangluokex@gmail.com“,这时需要使用邮局服务
SSL/TLS
Overview
这个比较重要,我起初在这里遇到了很多问题,我尽量写清楚。
这个只针对开启黄色小云朵的网站生效,这一小节我默认都开启小云朵了,以开启小云朵的”a.tanglu.cf”为例
如果没有开启小云朵则说明你不需要cloudflareCDN,你选择四个中任何一个设置都不会影响你的网站,可以跳过本节
Off (not secure)
不加密,用户只能通过80端口访问网站,即使你通过https访问,cloudflare也会返回给客户端301请求 告诉浏览器通过http访问,然后浏览器再次通过http请求”如图中序号2”
cloudflareCDN访问网站服务器的过程为”回源”,Off (not secure)模式下回源也是未加密的http协议
Flexible
此模式下,客户端到CDN选择http或者https均可,由客户端决定,CDN到服务器为强制http协议,如果此时服务器设置”强制https”则会导致重定向次数过多产生错误(如下图所示)
即CDN通过http协议向服务器发起回源请求,服务器因为设置了强制https 服务器会发送301重定向数据包告诉CDN必须通过https访问,CDN由于设置的”Flexible”使其必须使用http访问,也就导致了错误,解决方法就是选择”Full”模式或者服务器取消”重定向到https”
注:开启小云朵后,有小伙伴需要强制网站http跳转到https的需求,这时需要注意无论服务器设不设置”重定向到https”都不会对客户端浏览器产生影响,而只会影响CDN服务器的回源请求使用的协议(http/https)。因为客户端是与CDN服务器协商访问协议,CDN再与源服务器协商访问协议。
正确的做法是在cloudflare面板开启”强制https”或者通过cloudflare rule配置重定向 后面会有写
Full/Full (strict)
这两者基本差不多,”full”模式CDN服务器不会对源服务器返回的证书进行校验其是否合法,而”Full (strict)”模式CDN向源服务器请求时 只接受合法且未过期的SSL证书。建议选择”Full” 这样的话如果你启用了cloudflareCDN,即使源服务器端证书过期 客户端也是可以正常访问的,过期的证书相当于”自签证书”同样有加密效果
此模式下CDN会强制客户端使用https协议,客户端用http协议访问的话CDN会返回301重定向信息 告诉浏览器用https请求,证书由cloudflare提供(下一节有写),服务端也必须必须部署证书,CDN回源时通过https协议请求数据。
Edge Certificates
域名NS记录设置到cloudflare时,cloudflare会自动为你生成这两张证书,用途就是客户端用https请求时 CDN将这个证书发送给客户端
注意:这张证书只包含一级域名”tanglu.cf”和二级域名”*.tanglu.cf”,如果你的网站是三级域名”three.a.tanglu.cf” 此域名属于” *.a.tanglu.cf”,但不属于” *.tanglu.cf”。
这时你如果开启小云朵启用CDN,用户只能通过http协议访问,如果使用https协议会提示证书不安全 即不合法的证书。
解决方法可以通过SaaS免费接入(后面会写)或购买高级证书或开通200刀一月的cloudflare buisness上传自己的证书
Always Use HTTPS 这个开启就是用户用http访问会重定向到https
client Certificates
不知道这个有什么用怎么使用,跳过
Origin Server
Origin Certificates:这个证书就是可以放在服务器,cloudflareCDN回源请求时用到,但是仅限于cloudflareCDN,其他CDN或者客户端浏览器都是认为它是不合法的,感觉不如自签(没什么用)
Custom Hostnames
这个似乎被称为SaaS,是实现CNAME接入cf并使用cloudflareCDN,可以用来自选IP。下文记录了从CNAME接入
到自选IP
再到分线路解析
1、CNAME接入cloudflare
假设我需要加速的网站为cfpages1.tanglu.cf,该网站的服务器也就是源服务器的IP假设为 43.43.43.43(也可以是ipv6或者域名)
可能有小伙伴有疑惑,我”tanglu.cf”这个域名已经接入cloudflare了,为什么还要CNAME接入cloudflare
答:这里换做未接入CF的域名也是可以的,另外CNAME接入也不是画蛇添足,而是可以给cfpages.tanglu.cf进行自选IP的,实现锦上添花。为什么要自选IP:cloudflare默认给你分配的IP对联通和移动丢包可能很大 甚至给你分配的被墙的IP,这个时候你可以自选其他低丢包的节点 降低网站延时和减少丢包
步骤1.1:首先随便决定一个回落域名名称 我设置的”back.tanglu.cf”,然后在CF-DNS添加”back.tanglu.cf”的A记录指向 源服务器IP(43.43.43.43) 记得小云朵要打开
步骤1.2:然后在SSL/TLS>>Custom Hostnames 填写”Fallback Origin”为回落域名(显示青绿色active为添加成功)
步骤1.3:在SSL/TLS>>Custom Hostnames 点击”Custom Hostnames“输入你要加速的域名”cfpages1.tanglu.cf”,然后为cfpages1.tanglu.cf添加CNAME记录 记录值为回落域名”back.tanglu.cf”(不要开启小云朵,这里只需要简单的DNS功能不需要CDN功能),最轻松的CNAME接入就完成了
过程:用户在浏览器输入并访问”cfpages1.tanglu.cf”,(运营商DNS服务器没有cfpages1.tanglu.cf的DNS记录,进而向根域名”.cf”服务器询问tanglu.cf的DNS服务器,得到tanglu.cf的DNS服务器为”gerald.ns.cloudflare.com”,运营商DNS服务器继续向”gerald.ns.cloudflare.com”服务器发送请求询问”cfpages1.tanglu.cf”的DNS记录,返回得到其服务器IP为”back.tanglu.cf”,运营商DNS服务器继续请求”back.tanglu.cf“的DNS记录,cloudflare会返回”back.tanglu.cf”的A记录为”104.29.124.26”)最终运营商DNS服务器向浏览器返回cfpages.tanglu.cf 对应的IP为”104.29.124.26“,浏览器向104.29.124.26对应的服务器请求”cfpages1.tanglu.cf”的网页,cloudflare收到浏览器的请求,查找发现cfpages1.tanglu.cf对应的IP为”back.tanglu.cf“的IP 即”43.43.43.43”,cloudflare向”43.43.43.43”请求”cfpages1.tanglu.cf”网站的数据,CDN回源请求得到数据后再发送给浏览器
过程大概就是这样,成功CNAME接入cloudflare
2、自选IP
这个其实很简单,从上述过程可以发现 我们要实现自选,运营商DNS服务器就不能给我们返回”104.29.124.26”这个普通IP,我们可以直接将步骤1.3的CNAME记录换为A记录 值为优选的IP(假设为1.0.0.1)
注意:此时fallback”back.tanglu.cf”所属的顶级域名不能与加速网站”pages1.tanglu.cf”相同(即不能都为”tanglu.cf”),我也不懂为什么,相同会报错”Error1000”
图片中我用的back.tanglu.ltd做的回落域名,加速域名为”three.a.tanglu.cf”
步骤3也是back.tanglu.ltd做的回落域名,加速域名为”cfpages2.tanglu.cf”
3、分线路解析
这个是利用国内DNS平台的分线路解析功能,(tencent ali huawei都支持),因为ali支持二级域名NS接入,我就将”cfpages2.tanglu.cf”接入ali,然后直接设置A记录就行
Security
Events
触发防火墙规则的事件,从这里可以分析到很多,如果你这里一条日志都没有 我建议你配置一下WAF
WAF
Firewall rules:每个人的需求都不一样,我列举一些常见的
匹配规则由上到下遍历,一旦遇到符合的防火墙规则 则执行规则并停止匹配
*1、禁止古巴和加拿大的小米手机访问r2.smalljp.com/的所有内容
2、禁止访问所有png类型的图片,并且禁止访问smalljp.com下的所有mp4资源
3、显示所有访问者的IP,并要求对浏览器进行质询,这个建议放在最后一条识别
托管质询和JS质询比较友善,但也会增加相应时间
Legacy CAPTCHA 这个选项会让用户手动选择图片 也就是机器人验证弹窗 非常影响用户体验
Rate limiting rules
这个是防止CC,我配置的是10秒钟请求数超过200封禁
Setting
Security Level 这个选中低就行了,级别越高 用户打开网页所以对于应该越慢 用户体验应该越差
Caching
cloudflare规则我有很多都不会,我只写下我会的规则,欢迎大佬分享规则
Configuration
这个应该看得懂,自己设置吧
Cache Rules
这个我也不是很会,只知道一些简单的,期待大佬补充
另外官方也有很详细的说明:https://developers.cloudflare.com/cache/about/default-cache-behavior
缓存规则可以改变默认设置,但无法改变规定设置,可能写的有点歧义。举个例子来说就是cloudflare默认缓存文件中没有html 但是我通过设置可以实现缓存HTML,又比如cloudflare规定免费版支持缓存不超过200MB的文件,这时你即使设置缓存所有文件 但如果某个文件大小超过500MB,cloudflare依然不缓存,这时我建议使用cloudflare R2。
1、缓存r2.smalljp.com下的所有资源
Rules
Page Rules
1、强制将某个子域名的所有http内容重定向到https
如:强制所有http://r2.smalljp.com/*跳转到https://r2.smalljp.com/*
2、不缓存r2.smalljp.com下的mp4文件
因为cloudflare最大缓存500MB 一旦视频超出500MB就会和缓存起冲突,导致视频直链无法在线观看,但不影响视频下载
Configuration Rules
Transform Rules
Redirect Rules
这三个我都不会,恳请大佬补充
Origin Rules
这个我只知道富强用途,因为cloudflare只支持特定端口的请求,这个可以设置CDN回源请求的端口
Network
这里面的配置可以全部开启,有些我也不懂…
Apps
这个我也不了解,哦,不对!剩下的我都不了解
当然也不支持全部都了解
domain Registration
听说这个注册和续费都是全球最低价,google土区除外(顺便说一句google domain 土区是真的便宜,org net只要30元一年)
google domains和cloudflare没有的域名可以看我这篇文章:域名注册局比价
Zero Trust
Zero Trust我只对tunnels有一点了解,其他的访问令牌Access什么的我用不到 就没有过多了解
tunnels就是cloudflare提供的内网穿透,,软件名字叫做”cloudflared”,windows mac linux都可用。类似与frp但是设置比frp简单一些,非常好用(但大陆因为网络环境体验感一般)
官方文档写的很详细,我将常用的功能演示一下
Tunnels
一、内网网站映射到公网
常用于家庭电脑搭建网站或中国境内封禁80 443端口的服务器做站
此内网需要可以与公网通信
前景概要:我在内网用nginx部署了三个网站 http://tunnel1.a.com http://tunnel2.a.com http://tunnel3.a.com:81 ,我的服务器80 433端口都被封禁了,我想通过内网穿透实现通过 https://web1.smalljp.com https://web2.smalljp.com https://web3.smalljp.com 来访问它
注:
答:可以,你可以自签证书但是我不清楚cloudflared是否认可你这个证书,我个人认为没必要,因为用户端的证书是cloudflare提供的,你运行cloudflared程序的电脑和cloudflare服务器之间的内容肯定是被加密过的,所以就用http就行。另外多嘴一句 a.com 这个域名又不能被用户看到,用户看到的是web1.smalljp.com这个域名…
a.com是否有什么意义?
答:可以随便设置一个你喜欢的即使你不拥有这个域名,这个域名仅仅是用来host匹配不同server{}字段,不然都是443端口 内网机器怎么知道用户请求的哪个server,不清楚的可以了解下http协议 这方面我也不是很懂…
我机器80端口被封禁了为什么还可以将网站部署在80端口?
答:cloudflared可以访问电脑的内网80端口,然后cloudflared将数据包从任意一个未被封禁的高位端口(比如55555)将数据包发送给cloudflare服务器
正常内网穿透是用一台443端口正常的公网IP机器来作为用户与服务端的桥梁,但是cloudflare的 tunnel可以实现让cloudflare服务器作为中转机即:用户>cloudflare服务器>内网电脑的cloudflared>内网站点>cloudflared将类网站点数据通过某个端口将数据返回给cloudflare服务器>用户收到cloudflare的数据
步骤1:在内网部署https://tunnel1.a.com https://tunnel2.a.com http://tunnel3.a.com:81 三个网站并安装tunnels,tunnels-status显示”healthy”表示安装成功,即cloudflared可与cloudflare服务器正常通信。至此服务端配置完成,接下来在Cloudflare Zero Trust面板配置刚刚添加的tunnels-demo
步骤2:在”Public Hostname”依次添加这三个隧道,
注:HTTP Setting中的HTTP Host Header一定要填写,除非你这个端口就一个内容/服务
比如我设置的nginx81端口,该端口只有一个页面,你可以不填Host这一项
你设置qbittorrent的8080端口,alist的5244端口等都是可以的
————————————————
二、SSH远程
tunnel添加SSH 官方文档写的很详细,我只是将官方文档演示一下,国内使用不如套中转
官方说客户端必须使用WARP或者cloudflared连接,我无法使用WARP只好下载cloudflared演示了。当然你也可以配置Access通过浏览器访问
客户端cloudflared下载链接:https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation
步骤:服务端就像之前那样安装cloudflared,然后如下图添加隧道,
客户端(就是你主控端)安装cloudflared或者WARP并启动,我以linux做客户端为例 vim /root/.ssh/config
然后填入以下内容
1 |
Host ssh.example.com |
1 |
#比如我的配置 |
三、windowsRDP登录
这个只有windows才有RDP好像,官方文档写的很详细,要求和上面SSH几乎差不多,国内不如套中转
客户端执行
cloudflared access rdp --hostname rdp.example.com --url rdp://localhost:3389
这个似乎是将RDP服务映射到本机3389端口,我也不是很清楚
然后浏览器会进行验证身份
如何让RDP像SSH一样在网页端远程我还不知道,期待大佬解答!
R2
R2对象存储配置我单独发布了一篇保姆级文章
看好多小伙伴反馈国内速度也很不错:CF R2国内流媒体速度测试-美国VPS综合讨论-全球主机交流论坛 - Powered by Discuz! (hostloc.com)
视频直链演示:
可以测试R2文件下载速度或者播放是否可以随意滑动进度条
Your browser doesn’t support HTML5 video. Here is a link to the video instead.
后续了解了更多与cloudflare知识会继续更新,不过感觉可能也就是了解一下规则之类的
对计算机语言都不怎么了解看不懂Turnstile验证码,更不会Workers Pages…