善忘技术夹 Logo
善忘技术夹
善用佳软 · 150 阅读

一条命令把 localhost 变成公网地址:Cloudflare Quick Tunnels 免注册免域名

调试本地服务时,总会遇到需要给别人看的时刻。

写好的网页想让同事在手机上试试,做微信支付或者 Stripe 的回调调试,服务跑在本机 localhost:8080,对方的手机、支付宝服务器、微信服务器根本访问不到。常规解法有这么几种:把代码部署到测试服务器(麻烦,改动一次要重新部署),用内网穿透工具(要注册、要配置、有的还要付费),改路由器做端口映射(需要公网 IP,还有安全风险)。

Cloudflare 的 Quick Tunnels 提供了第四条路:一条命令,不用注册账号,不用买域名,不用在路由器上开端口,直接给本地服务生成一个公网 HTTPS 地址。

这是什么

Quick Tunnels 是 Cloudflare Tunnel 的一个免登录模式(也叫 Trycloudflare)。它在你的电脑和 Cloudflare 全球边缘网络之间建一条隧道,公网请求先到 Cloudflare,再通过这条隧道转发到你本机的服务。

关键点在于这条隧道是单向发起的。你的机器主动连出去,不需要对外开放任何入站端口,路由器、防火墙都不用动。这对没有公网 IP 的家庭宽带、公司内网、还有酒店 WiFi 这类环境特别友好。

Cloudflare 官方文档里把它定位成”测试和开发用途”,生产环境还是建议用需要登录的命名隧道。

装一个命令行工具

Quick Tunnels 依赖 cloudflared 这个守护进程。安装方式按平台各异。

macOS 用 Homebrew:

brew install cloudflared

Windows 可以从 GitHub Releases 下载 exe 或 MSI 安装包,或者用 winget:

winget install Cloudflare.cloudflared

Linux 走 Cloudflare 的软件源,或者直接下 deb/rpm 包:

wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb

也有 Docker 镜像 cloudflare/cloudflared。注意 cloudflared 在 Windows 上不会自动更新,需要手动升级;用旧版本的话至少要升到 2020.5.1 以上。

一条命令搞定

装好之后,在终端里跑:

cloudflared tunnel --url http://localhost:8080

把 8080 换成你本地服务的端口。命令执行后,终端会打印出一个框,里面是生成的公网地址,形如 https://某个随机字符串.trycloudflare.com。这个地址自带 HTTPS,全球可访问。

完整流程通常是两个终端窗口:一个跑你的本地服务,另一个跑这条命令。比如用 Python 起个静态服务测试:

python -m http.server 8080

然后另开一个窗口跑 cloudflared,把打印出来的地址发出去就行。

有几件事要知道。这个地址是临时的,每次重启 cloudflared 都会换一个新的,所以不适合长期用。如果 .cloudflared 目录下存在 config.yaml 配置文件,Quick Tunnels 会不工作,需要临时把那个文件改名。

Cloudflare Quick Tunnels 公告图

能用来干什么

最典型的是 Webhook 调试。做支付、消息推送、GitHub 钩子这类开发,第三方服务需要回调你的接口,而你的开发机在 localhost 上。跑一条 Quick Tunnel,把公网地址填到第三方的回调配置里,就能在本地断点调试整个流程了。

前端开发也用得上。做响应式布局时,把地址发到手机上直接看真机效果;测试浏览器兼容性时,把链接丢给不同浏览器打开;想跑个性能测试,让 Pingdom、WebPageTest 这类工具去压这个临时域名。

临时演示也是个场景。给客户或同事看半成品,不用先部署到服务器,本地打开 tunnel 把链接发过去,看完关掉就行。

有哪些限制

Quick Tunnels 免费,但有几个明确的约束,用之前得知道。

并发请求上限是 200 个同时在途请求,超了会返回 HTTP 429。不支持 Server-Sent Events(SSE),做流式推送的场景用不了。没有 SLA 和可用性保证——Cloudflare 官方说明,免费隧道某种意义上是新功能的试验田,他们用免费隧道来测试 Tunnel 的新特性,稳定后再推给付费客户。

地址是临时的,重启就变。不支持自定义域名,想要固定域名得注册账号用命名隧道。

这些限制只针对 Quick Tunnels,注册账号用标准的命名隧道就没有这些约束。

和 ngrok 比

ngrok 是最常被拿来对比的工具,两者都是把本地服务暴露到公网,区别在门槛和侧重。

ngrok 免费版需要注册账号、拿到 authtoken 配置到本地才能用,Quick Tunnels 不需要账号,装上就能跑。这是最直接的差别。

能力上,ngrok 免费版有请求查看器、请求重放、WebSocket 支持这些调试工具,Quick Tunnels 没有配套的检查面板。ngrok 客户端是闭源的,cloudflared 是开源的。网络方面,Cloudflare 的边缘节点覆盖 300 多个城市,ngrok 的网络规模小一些。

选哪个看需求。只是想让别人访问一下、调试个 webhook,Quick Tunnels 的零门槛更省事。需要看请求详情、重放请求、调 WebSocket,ngrok 的工具链更完整。

适合什么人

如果你符合这几条,Quick Tunnels 值得记住:需要临时把本地服务给外部访问,又不想部署;调试需要公网回调的第三方集成;在没有公网 IP 的环境(家庭宽带、公司内网、酒店 WiFi)做开发;想要零成本、零注册的临时方案。

几个提醒。它是开发和测试工具,官方不推荐用于生产。并发限制 200、不支持 SSE、无 SLA,这些都要提前评估。cloudflared 是开源的,可以自己审代码。

获取方式:安装 cloudflared(brew / winget / 软件源 / Docker),然后一条 cloudflared tunnel --url 命令。文档在 Cloudflare 开发者站点的 Quick Tunnels 页面。

从”要给别人看”到”链接已经在手上”,中间只差一条命令,不用注册、不用买域名、不用碰路由器。这类工具的价值就在于把门槛降到接近零。

关注「善忘技术夹」全媒体矩阵

扫描上方宣传海报二维码,第一时间获取最新技术文章、开源项目与免安装小程序体验。

善忘技术夹 微信公众号宣传图
微信公众号 (扫码关注)
善忘技术夹 微信小程序宣传图
微信小程序 (扫码即用)