You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Cloudflare Agrotunnel用单免费域名映射多端口服务

你可以通过Cloudflare Tunnel实现需求,不需要公网IP,免费额度完全覆盖个人使用场景,以下是从零开始的操作步骤:

前置检查

先确认两个本地应用运行正常:

  • 本地浏览器访问http://localhost:8081可以正常打开app1
  • 本地浏览器访问http://localhost:8082可以正常打开app2
方案一:固定域名访问(需免费注册Cloudflare账号,域名长期有效)

这个方案可以拿到固定的访问域名,重启服务也不会变,适合长期使用。

步骤1:安装Cloudflare Tunnel客户端(cloudflared)

根据自己的操作系统选对应安装方式:

  • Windows:以管理员身份打开PowerShell,执行winget install Cloudflare.cloudflared,等待自动安装完成即可
  • macOS:打开终端执行brew install cloudflared
  • Linux:通过系统对应包管理器搜索cloudflared安装即可

安装完成后在终端执行cloudflared --version,正常输出版本号就说明安装成功。

步骤2:账号授权与隧道创建

  1. 终端执行cloudflared tunnel login,命令执行后会自动唤起浏览器,跟着页面提示登录Cloudflare账号(注册完全免费),如果没有自有域名,开通账号后可以免费申请workers.dev后缀的二级子域名,不需要额外花钱买域名,授权时选这个域名即可。
  2. 授权完成后回到终端,执行命令创建自定义隧道,名称可以随便填,比如local-web-apps:
    cloudflared tunnel create local-web-apps
  3. 命令执行完成后,会输出一串格式类似abc123def-4567-89gh-ij01-klmnopqrstuv的隧道ID,同时会显示凭证文件的本地存储路径(Windows一般在C:\Users\你的用户名\.cloudflared\<隧道ID>.json,macOS/Linux一般在~/.cloudflared/<隧道ID>.json),把这两个信息记下来,后面配置要用到。

步骤3:编写路由配置文件

找到cloudflared的默认配置目录,没有就手动新建:

  • Windows:C:\Users\你的用户名\.cloudflared\
  • macOS/Linux:~/.cloudflared/
    在目录内新建名为config.yml的文件,根据自己想用的访问模式选配置:

模式A:子路径访问(同一个域名下用不同路径区分两个应用)

适合支持子路径部署的应用,配置内容如下,替换掉尖括号占位的内容:

tunnel: <刚才拿到的隧道ID>
credentials-file: <刚才拿到的凭证文件完整路径>

ingress:
  # 访问 域名/app1 下的所有请求,转发到本地8081的app1
  - hostname: <你授权时选的域名>
    path: /app1/*
    service: http://localhost:8081
  # 访问 域名/app2 下的所有请求,转发到本地8082的app2
  - hostname: <你授权时选的域名>
    path: /app2/*
    service: http://localhost:8082
  # 不符合上面规则的请求默认返回404
  - service: http_status:404

注意:如果访问时出现静态资源加载失败、页面样式错乱,说明你的应用不支持部署在子路径下,换成下面的子域名模式即可,不需要修改应用本身的配置。

模式B:子域名访问(不同二级域名对应不同应用)

不需要应用支持子路径部署,兼容性更好,配置内容如下:

tunnel: <刚才拿到的隧道ID>
credentials-file: <刚才拿到的凭证文件完整路径>

ingress:
  # app1.你的域名 转发到本地8081
  - hostname: app1.<你授权时选的域名>
    service: http://localhost:8081
  # app2.你的域名 转发到本地8082
  - hostname: app2.<你授权时选的域名>
    service: http://localhost:8082
  # 兜底404
  - service: http_status:404

步骤4:添加DNS解析

登录Cloudflare控制台,进入你选的域名的DNS管理页:

  • 用子路径模式的话,添加一条CNAME记录,主机记录填@,记录值填<你的隧道ID>.cfargotunnel.com,代理状态打开「已代理」
  • 用子域名模式的话,添加两条CNAME记录,主机记录分别填app1、app2,记录值都填<你的隧道ID>.cfargotunnel.com,代理状态都开「已代理」

步骤5:启动隧道

终端直接执行cloudflared tunnel run,看到日志输出Registered tunnel connection的成功提示,就说明隧道启动完成了。
直接在浏览器访问对应地址就能打开两个应用:

  • 子路径模式:https://你的域名/app1访问app1,https://你的域名/app2访问app2
  • 子域名模式:https://app1.你的域名访问app1,https://app2.你的域名访问app2
方案二:临时随机域名访问(无需注册账号,每次启动域名随机变化)

如果只是临时测试用,不想注册账号,可以用本地反代+快速隧道的方式,步骤更简单:

  1. 本地安装Nginx,配置Nginx监听比如8080端口,将/app1路径的请求转发到http://localhost:8081,/app2路径的请求转发到http://localhost:8082,启动Nginx。
  2. 终端直接执行cloudflared tunnel --url http://localhost:8080,等待几秒后终端会输出一个https://<随机字符串>.trycloudflare.com的临时地址,直接访问这个地址的/app1、/app2路径就能用两个应用。

注意:这个方案的域名是随机生成的,每次重启隧道都会变,只适合临时测试场景。

常见问题排查
  • 访问报502错误:先检查本地8081、8082端口的应用是不是正常运行,再检查本地防火墙有没有拦截cloudflared的本地请求
  • 子路径模式下页面错乱:换成子域名模式即可,是应用本身写死了根路径资源引用导致的
  • 隧道启动报凭证错误:检查config.yml里填的凭证文件路径是不是正确,Windows路径的反斜杠可以换成正斜杠避免转义问题

内容的提问来源于stack exchange,提问作者Anas S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 09:06:20