更新注意: Argo 隧道 (Argo tunnel)这个名字目前已经被 Cloudflare 更名为 Cloudflare Tunnel.
Cloudflare提供了一个名为Argo的内网穿透功能,其主要功能类似frp内网穿透工具
但Argo不需要一台有公网IP的主机,只需要一个被Cloudflare托管的域名。
通过Argo可以很方便的在一台内网主机上搭建站点,然后通过绑定域名来访问。假如没有自己的域名,那也没有关系,可以使用Cloudflare分配的随机二级域名。
同时,Argo也支持http之外的tcp服务,如ssh远程登陆。但是相比frp的方法,ssh等服务的客户端访问比较麻烦。 只不过在访问被转发的tcp服务时,客户端需要先运行 cloudflared access 命令,才能访问tcp服务。涉及到tcp服务的操作,留到以后的文章再介绍。这篇文章只介绍将http服务(网站)通过Argo暴露到公网的内容。
Argo隧道的使用方法如下:
- 在需要搭建网站的主机上下载 cloudflared 程序,前往 GitHub (https://github.com/cloudflare/cloudflared/releases) 下载最新版
- 下载后给予运行权限
chmod +x cloudflared
(需要注意的是运行它不需要root权限)
有自己域名的情况:
- 登陆cloudflare账户
./cloudflared-linux-amd64 tunnel login
- 创建一个隧道并命名,这边范例命名为 site1
./cloudflared-linux-amd64 tunnel create site1
- 创建网站的cname记录,这边范例的域名为 argo1.example.com
./cloudflared-linux-amd64 tunnel route dns site1 argo1.example.com
其中 site1 为上一步的隧道名 - 在服务器端运行隧道:
./cloudflared-linux-amd64 tunnel run --url localhost:80 site1
- 给搭建的站点赋予域名 argo1.example.com: 这一步有很多做法,最简单的方法是在宝塔面板中直接操作,操作完毕后在浏览器访问该域名即可的访问站点了
- 然而默认的情况下站点没有https加密,此时可以在宝塔面板里给站点添加 SSL 证书,但不要点选 强制HTTPS
- 刷新页面后可以看到HTTPS加好了
- 最后 需要把上面"运行隧道"的命令加入服务或者在screen模式里后台运行,否则终端窗口关闭后隧道通讯就中断了
没有自己域名的情况:
- 直接运行
./cloudflared-linux-amd64 tunnel --url localhost:80
- 系统会给你分配一个类似 this-is-an-example.trycloudflare.com 的域名
- 假如你是使用宝塔/aapanel或者其他方式建站的,需要把分配的地址绑定上去
本文参考了 土豆不好吃 的 Cloudflare Argo Tunnel 小试:我终于可以用树莓派做网站啦 一文,特此感谢。