你还在为买不起价格昂贵的服务器、没有公网 IP的问题而烦恼吗?阅读本文带你无需服务器即可让你在公网访问你的应用程序。
之前也发过一篇文章吐槽过使用Ngrok
进行反向代理,因为其免费的代理域名对国区速率有限制,所以那会就推荐大家使用一款名为frp
的开源软件进行反向代理。但是今天我发现了一种更好的反向代理方式,就是使用Cloudflare
的Tunnel功能进行反向代理。
优缺点
使用这种方式的优点:
- 完全免费
- 拥有完整的 GUI 界面,操作简易
- 无需暴露您的真实 IP
- 无需要配置 Nginx 等任何反向代理软件
- 无需配置 SSL 证书
- 提供免费的 SSL 证书
缺点:你的域名 DNS 必须由 Cloudflare 进行托管(其实缺点也是优点,因为 Cloudflare 是全球最大的网站防御机构,由它进行托管的网站,可以省去不少的麻烦。)
原理
Cloudflare 的 Tunnel 原理就是在你本地安装他所需要的依赖,然后本地安装它所提供的 JWT 令牌,在 GUI 界面上进行IP 端口与域名地址的映射即可实现内网穿透的能力。说白了就是可以通过你自己的域名访问你的应用程序。
要求
- 拥有 Cloudflare 账号
- 拥有一个属于自己的域名
- 域名的 DNS 需由 Cloudflare 进行托管
Steps
- 登录 Cloudflare(没有的话自己注册),选择你托管的域名

- 点击 Access,然后创建 Zero Trust

- 创建完成后,你会进入到如下页面,接着我们点击 Access 菜单中的 Tunnels,然后创建 Tunnel

-
输入 tunnel 的名称,然后继续
-
根据自己所属的机型选择对应的安装方式,这里以
Mac
为例
bash# 安装cloudflared依赖
brew install cloudflare/cloudflare/cloudflared
# 本地安装服务所需的JWT令牌
sudo cloudflared service install eyJ.....

- 安装成功之后在 GUI 界面中便会出现成功连接的客户端,然后点击下一步


- 按照下图根据自己的情况进行应用程序的 IP 端口号与域名之间进行绑定,然后点击保存

- 最后在浏览器中输入你绑定的域名,测试是否能通过 https 协议访问你的本地服务


- 完结撒花 🎉
感悟
有如此好用的功能,我突然想起是时候好好的利用我那台 32G 运存的 Mac Stutio 了,把一些在我服务器上资源消耗大的 docker、jenkins 等服务都通过本地化进行部署,然后通过 cloudflare 进行内网穿透,直接起飞!!!
