众所周知Cloudflare是免费用户的建站神器,提供了免费的CDN服务和每天10万次的worker服务。此外还有个好东西是Cloudflare Tunnel,简单来说可以通过你的域名访问到你的服务器,但是通过cloudflare进行中转代理,好处就是不会暴露服务器IP,也不需要配置SSL证书。
什么情况下你需要Cloudflare Tunnel
-
内网穿透
最核心的当然就是内网穿透如果你没有公网IP,但是想要在公网访问你的服务器/电脑
-
不想配置Nginx
比如你在服务器上部署了一个后端服务在8080端口,你需要通过你的域名公网访问,一般情况下可以通过配置Nginx实现这么个需求,你也可以通过Cloudflare Tunnel实现,只需要配置域名和内网下的端口
-
不想配置SSL证书
跟上条类似,nginx还需要配置https访问,对新手用户来说有一点麻烦,通过Tunnel就默认提供了Https服务
-
不想暴露服务器真实IP
如果只是单纯地不想暴露服务器IP,也可以通过CDN代理来实现。但Cloudflare Tunnel同样不会暴露IP
Tunnel有哪些限制
-
访问速度慢 如果你的服务器在国内,那显然使用Tunnel代理后大大降低了访问速度,因为你的请求会先绕到Cloudflare在国外的服务器,延迟至少增加200ms。但如果你的服务器在国外,增加的延迟就比较小
-
内容安全 因为所有数据都会经过Cloudflare,如果你对Cloudflare不够信任,也要慎重使用Tunnel
-
不够灵活 Tunnel不能像Nginx一样灵活,可以适配各种url路径,比如你增加了一条是www.abc.com/qwe,那么就无法再增加一条www.abc.com/xxx这样的路径,因为www.abc.com是一条Cname记录
如果配置Tunnel
首先进入dash.cloudflare.com, 点击Zero Trust, 跳转到新的页面。
然后点击 Networks - Tunnels, 进入到Tunnels页面
点击Create Tunnel, 选择Cloudflared
随便起个名字,是给自己区分Tunnel用途的
安装连接器,也就是你的服务器需要和cloudflare建立连接,这里有很多种安装方式,Windows使用安装文件,Linux直接复制命令,这里我还是选择docker安装。如果安装成功,下方会识别到,就可以下一步了
然后就可以看到代理的列表了,可以增加很多条,比如www.abc.com -> http://127.0.0.1:8080就是一条记录
点击Add a public hostname 开始添加,这里需要填写二级域名,域名必须是你已经注册到cloudflare上的。下面是你要穿透的服务器的内部地址,支持不同协议比如HTTP、TCP、Unix等等,然后配置上内网地址,注意区分localhost、127.0.0.1和192.168.x.x
配置成功
完成以上步骤,你就可以通过刚才配置的域名地址,访问你要穿透的服务器的内部地址了,直接在浏览器中就可以访问HTTP类型的服务了,此时你会发现已经可以通过HTTPS访问了。
当然Cloudflare Tunnel的功能还不止于此,比如可以添加安全策略、还有Warp模式等等,这些我们接下来继续探索。