大家好,我是1024小神,技术群 / 私活群 / 股票群 或 交朋友 都可以私信我。
如果你觉得本文有用,一键三连 (点赞、评论、关注),就是对我最大的支持~
前提是要有一个cloudflare账号和注册的域名,注册cloudflare然后随便购买一个最便宜的域名即可,也有免费的域名,然后dns绑到cloudflare也可以。官方使用文档和教程:Cloudflare Tunnel · Cloudflare Zero Trust docs
官方介绍
Cloudflare Tunnel 为您提供了一种安全的方式,无需公开路由的 IP 地址即可将资源连接到 Cloudflare。使用 Tunnel,您不会将流量发送到外部 IP,而是基础设施中的轻量级守护程序 (cloudflared) 创建与 Cloudflare 全球网络的仅出站连接 。Cloudflare Tunnel 可以将 HTTP Web 服务器、SSH 服务器 、 远程桌面和其他协议安全地连接到 Cloudflare。这样,您的源站就可以通过 Cloudflare 提供流量,而不会受到绕过 Cloudflare 的攻击。
有关如何在现有基础设施中实施 Cloudflare Tunnel 的详细信息,请参阅我们的参考架构 。
它能做什么?
这应该是很多人关心的问题,我举个例子:
参照上面的工作图,假设我本地电脑上运行了一个服务器,端口是8080,这时候我希望可以通过公网访问这个服务,一般来说我们需要一个云服务器部署这个服务,然后通过公网IP和端口进行访问,非常麻烦。
如果使用cloudflare tunnel实现,你只需要在cloudflare上托管一个域名即可,无需云服务器!
使用教程
首先你需要在本地运行你的服务,例如你用后端写了一个api接口,又或者你使用前端开发了一个网站等,又或者可以在你本地直接运行的项目,例如vue项目在本地运行的地址:
安装 Cloudflare Tunnel
安装之前先确保你已经注册了cloudflare账号并且在上面托管了一个域名(或者随便买一个最便宜的都行),确保活动状态,下面是我托管的一个域名 kirakira.dpdns.org,以这个域名为例,这个域名是在DigitalPlat Domain Dashboard上免费申请的,不用手机号,非常方便简单,国内访问可能不太稳定但至少能用
安装cloudflared
1.前往Cloudflare One(Cloudflare One)然后登录,然后依次点击网络->Tunnels->创建隧道
2.选择 cloudflared
3.随便起个名字然后保存
4.我这里选择Windows,其他平台选择对应的安装方式安装就行
https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.msi. 下载后,运行安装程序,安装成功后,再执行下面的命令。
以管理员身份打开命令提示符,运行以下命令:
cloudflared.exe service install 你的那个id
5.安装完成之后点击侧栏的Tunnels可以看到创建的隧道已经激活了
2.2.3 配置tunnel
1.点击隧道名称然后点击编辑
2.然后点击添加公共主机名
这两个是必填项:
[非常重要]
子域和路径可以自定义设置,可以留空,服务就按照之前部署的本地服务填写即可
下图中的效果相当于将访问https://子域.域/路径的请求转发到你本地电脑<类型://URL>,也就是:
https://api.yuming.com -> http://localhost:10086/
3.此时打开https://api.kirakira.dpdns.org就能看到效果了,第一次可能没那么快,大概过几秒会显示:
注意:
1. 如果你部署的是前端项目,比如vue/react等,也可能出现: invalid hostheader问题disableHostCheck:true报错 ,这是因为需要在项目中配置allowedHosts,允许哪些域名访问到这个项目
2.本地电脑上安装的cloudflared的服务可以转发多个端口,在公共主机名可以像上面一样添加,服务也可以设置为其他服务
绑定的公共主机名会在该域名下添加DNS记录,注意不要误删除了
如果你使用Windows,可以使用下面命令启动和停止cloudflared服务
启动 sc start cloudflared
停止 sc stop cloudflared(也可以用任务管理器停止)
如果你有好的想法或需求,可以私信我,我这里有很多程序员朋友可以帮你实现你的想法。