5:23Better Stack
Log in to leave a comment
No posts yet
在使用免费隧道工具时,因每次运行都会生成的随机 URL 而感到压力是常有的事。如果使用 ngrok 之类的服务,每次重启时 URL 都会改变,那时就不得不进入 Stripe 或 GitHub 的设置页面重新输入端点。虽然这只是简单的重复性工作,但一天只要重复三四次,20 分钟也就随之流逝了。按年计算的话,一名开发者竟然要在复制粘贴 Webhook 地址上浪费 80 个小时。
zrok 一举解决了这一乏味的过程。请先通过 zrok reserve public localhost:8080 命令抢占属于自己的唯一主机名。接着,在输入共享命令时将预留的名称进行映射即可。现在,无论关闭后重启终端,还是重启电脑,注册到外部服务的 Webhook 地址都不会再改变。只需一次设置,就能完全消除修改地址的时间。
开启多个终端,手动运行一个服务器和一个隧道工具的方式极易出错。服务器在运行但因忘记启动隧道而导致外部 API 响应丢失的情况,往往令人十分恼火。由于 zrok 使用了 OpenZiti 网络叠加层(Network Overlay),因此能与容器环境完美契合。
最整洁的方法是直接在 docker-compose.yml 文件中加入 zrok 服务。只需使用 openziti/zrok 镜像,并在 .env 文件中放入获取到的令牌(Token)即可。通过这种配置,只需一条 docker compose up 命令,后端服务器和用于外部通信的隧道就会同时启动。团队成员也无需安装或设置额外工具,即可共享相同的开发环境。这是从结构上阻断因手动设置引发的人为错误(Human Error)最可靠的手段。
当需要向同事展示正在本地开发的 API 时,生成公共 URL 在安全性上往往令人心存芥蒂。因为只要知道地址,任何人都有可能触碰我的本地数据库。zrok 支持“私有共享”(Private Share)功能,无需公开 URL 也能实现安全通信。
原理很简单。当我执行 zrok share private http://localhost:8080 时,会生成一个唯一的令牌。将此令牌传递给同事后,同事在自己的终端输入 zrok access private [令牌]。现在,同事就可以通过自己电脑上的 localhost:9191 访问我的本地服务器了。这样就形成了一个既不暴露在外部互联网,又仅供我们之间互通的虚拟通道。无需构建额外的 VPN 服务器,即可瞬间打造一个应用了端到端加密的协作空间。
随着数据传输量的增加,商业服务的免费方案很快就会遇到瓶颈。速度变慢或触及带宽限制,常会导致测试中断。zrok 的源代码是公开的,因此可以在企业内部服务器或廉价的 VPS 上直接构建控制器(Controller)。
通过自托管运营,可以将每年接近 100 美元的付费方案成本,替换为每月仅需 5 美元左右的服务器维护费用。这不仅仅是为了省钱。使用专用服务器可以启用 QUIC 协议,网络性能比 SaaS 有显著提升。随着延迟(Latency)的降低,传输大规模数据的 API 测试也会变得更加顺畅。这不再是让开发去适应工具的限制,而是拥有了为自身环境量身定制的工具。