所有文章
comparisonCloudflare Tunnellocalhost tunnelingopen source

PortPreview 与 Cloudflare Tunnel:不同的工具

这其实不是一场对决。Cloudflare Tunnelcloudflared)和 PortPreview 住在不同的房间。Cloudflare Tunnel 用于把服务永久在线地保持在 Cloudflare 边缘之后——Zero Trust、命名隧道、自定义域名。PortPreview 用于你开发会话的接下来二十分钟——webhook 测试、移动 QA、和设计师分享一个分支。在两者之间选择,主要取决于你实际有哪个问题。

Cloudflare Tunnel 擅长什么

cloudflared 是为一件事构建的:把服务放到互联网上,无需打开任何入站端口,也不暴露你的源 IP。在服务器上运行它,把一个命名隧道挂到你 Cloudflare 域名上的某个主机名,流量就通过你机器发起的出站连接经 Cloudflare 边缘流向你的源。

它做得好的事:

  • 生产路由。命名隧道功能持久。你可以把 cloudflared 作为服务运行,主机名在重启间持续工作。
  • Zero Trust 访问策略。用 SSO、MFA 或 IP 允许列表为内部工具暴露把隧道门控起来。
  • 自定义域名。把你自己的域名带到 Cloudflare。隧道终结在 your-domain.com,而非供应商子域名。
  • WARP 路由。无需 VPN 设置,从 Cloudflare 网络上任何设备访问私有服务。

这些都不是关于 webhook 调试的。

Cloudflare Tunnel 在开发中何处变得别扭

quick tunnel 模式(cloudflared tunnel --url localhost:3000)是 cloudflared 最接近开发工具的形态,而且能用。你得到一个指向你本地端口的 *.trycloudflare.com URL。但是:

  • 像大多数开发隧道一样,URL 每次会话轮换。
  • 没有内置请求检查器。你只看到开发服务器日志的内容,仅此而已。要捕获 webhook 载荷以便稍后重放,需要外接一个单独的代理或日志器。
  • 命名隧道(稳定 URL 版本)的设置涉及 Cloudflare 账户、DNS 记录和一个配置文件。对长寿命服务值得;对 webhook 迭代会话则杀鸡用牛刀。

PortPreview 适合的位置

PortPreview 是面向开发循环的 localhost 隧道 CLI。一条命令,公开 HTTPS URL,内置请求捕获和重放。

npx portpreview 3000

我们优化的是“我改了我的 Stripe webhook 处理器”和“我知道它是否有效”之间的时刻。那个时刻应该是几秒钟。捕获载荷,修处理器,重放到变绿,全程无需重新触发上游事件。

并排

需求Cloudflare TunnelPortPreview
webhook 调试的快速会话可能(quick tunnel)为此而生
请求捕获和重放
稳定的命名主机名是(需设置)非默认重点
自定义域名隧道子域名
Zero Trust 访问策略
设置复杂度quick 低,named 中一条命令
作为服务永久运行为会话设计
开源客户端是(cloudflared)

何时用哪个

在以下情况用 Cloudflare Tunnel

  • 你需要服务 24/7 在线而不打开防火墙端口。
  • 你想要对内部仪表盘或管理工具的 SSO 门控访问。
  • 你需要一个由真实 CA 证书和你现有 Cloudflare DNS 支撑的稳定自定义域名 URL。
  • 你已经在 Cloudflare 上,边际设置成本很小。

在以下情况用 PortPreview

  • 你在迭代一个 webhook 处理器并想要一键重放。
  • 你想和设计师分享一个分支十分钟。
  • 你在测试 OAuth 回调或移动流程而不想设置 DNS。
  • 你宁愿不为了测一个 Stripe 事件而管理一个 Cloudflare 账户。

它们能很好地共处

我们交流过的几个团队两个都用。Cloudflare Tunnel 用于需要固定 URL 和 SSO 的常驻内部工具。PortPreview 用于需要重放和单条命令的日常 webhook 调试。它们不冲突——只是服务于 dev 到 prod 弧线的不同部分。

如果你还在权衡 ngroklocaltunnel,那些对比可能更直接相关。开发循环一侧请 加入 PortPreview 等候名单

常见问题

Cloudflare Tunnel 是 PortPreview 的替代品吗?
不算。Cloudflare Tunnel 优化于用 Cloudflare 边缘把服务永久在线——命名隧道、自定义域名、Zero Trust。PortPreview 优化于开发循环——带请求捕获和重放的单命令会话。它们解决不同问题,能很好共处。
Cloudflare Tunnel 支持 webhook 请求检查吗?
并非原生支持。cloudflared 转发流量而没有内置请求检查器。要检查或重放 webhook,你需要外接一个单独的代理或日志层。PortPreview 在 CLI 中包含捕获和重放。
我能用 Cloudflare Tunnel 做快速开发会话吗?
可以,通过 quick tunnel 模式(cloudflared tunnel --url localhost:3000)。它够用于基础暴露,但不包含请求检查、重放,或无需额外命名隧道设置的稳定 URL。