使用Cloudflare的Tunnel进行反向代理

Dec 21, 2023 · 6min

你还在为买不起价格昂贵的服务器没有公网 IP的问题而烦恼吗?阅读本文带你无需服务器即可让你在公网访问你的应用程序

之前也发过一篇文章吐槽过使用Ngrok进行反向代理,因为其免费的代理域名对国区速率有限制,所以那会就推荐大家使用一款名为frp的开源软件进行反向代理。但是今天我发现了一种更好的反向代理方式,就是使用CloudflareTunnel功能进行反向代理。

优缺点

使用这种方式的优点:

  • 完全免费
  • 拥有完整的 GUI 界面,操作简易
  • 无需暴露您的真实 IP
  • 无需要配置 Nginx 等任何反向代理软件
  • 无需配置 SSL 证书
  • 提供免费的 SSL 证书

缺点:你的域名 DNS 必须由 Cloudflare 进行托管(其实缺点也是优点,因为 Cloudflare 是全球最大的网站防御机构,由它进行托管的网站,可以省去不少的麻烦。)

原理

Cloudflare 的 Tunnel 原理就是在你本地安装他所需要的依赖,然后本地安装它所提供的 JWT 令牌,在 GUI 界面上进行IP 端口与域名地址的映射即可实现内网穿透的能力。说白了就是可以通过你自己的域名访问你的应用程序。

要求

  1. 拥有 Cloudflare 账号
  2. 拥有一个属于自己的域名
  3. 域名的 DNS 需由 Cloudflare 进行托管

Steps

  1. 登录 Cloudflare(没有的话自己注册),选择你托管的域名
  1. 点击 Access,然后创建 Zero Trust
  1. 创建完成后,你会进入到如下页面,接着我们点击 Access 菜单中的 Tunnels,然后创建 Tunnel
  1. 输入 tunnel 的名称,然后继续

  2. 根据自己所属的机型选择对应的安装方式,这里以Mac为例

bash
# 安装cloudflared依赖 brew install cloudflare/cloudflare/cloudflared # 本地安装服务所需的JWT令牌 sudo cloudflared service install eyJ.....
  1. 安装成功之后在 GUI 界面中便会出现成功连接的客户端,然后点击下一步
  1. 按照下图根据自己的情况进行应用程序的 IP 端口号与域名之间进行绑定,然后点击保存
  1. 最后在浏览器中输入你绑定的域名,测试是否能通过 https 协议访问你的本地服务
  1. 完结撒花 🎉

感悟

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

2023-PRESENT © YUANBAO