服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-11-13 简米科技 3,481 字 8 分钟阅读

ngrok多域名怎么配置?ngrok多域名免费版如何设置?

导读想要让ngrok同时承载多个域名,核心做法是通过ngrok.yml配置文件为每个域名建立独立的隧道,并分别指定域名和转发端口,这样才能实现一机多域名同时在线,ngrok多域名配置:三种方案对比与实操先别急着敲命令,你得想清楚一个场景:本地起了三个网站,一个给客户看后台,一个给同事测接口,还有一个自己要联调小程序……

想要让ngrok同时承载多个域名,核心做法是通过ngrok.yml配置文件为每个域名建立独立的隧道,并分别指定域名和转发端口,这样才能实现一机多域名同时在线。

ngrok多域名配置:三种方案对比与实操

先别急着敲命令,你得想清楚一个场景:本地起了三个网站,一个给客户看后台,一个给同事测接口,还有一个自己要联调小程序,如果每次只开一个隧道,来回切换麻烦不说,回调地址一变,微信开发者工具那边的安全域名又得改,把网关、支付回调、App测试环境全部指向同一个ngrok进程,才是真实需求。

业内专家指出,ngrok多域名的本质是让一个客户端进程管理多条隧道,每条隧道对应一个代理入口,实现路径有三条:改配置文件、走自定义域名、自己搭服务端,下面按推荐程度逐个拆。

ngrok多个域名怎么绑定到同一台电脑?

最常见的方法是编辑ngrok.yml,把每个域名写成一个独立的隧道条目,然后一次性启动,你不需要开多个终端窗口,也不用装多个ngrok进程。

具体操作分四步:

  1. 打开ngrok安装目录下的ngrok.yml(没有就新建)。
  2. 在tunnels:下面定义多个名字。
  3. 每个名字里指定proto、addr和hostname(或subdomain)。
  4. 保存后运行ngrok start --config ngrok.yml name1 name2。

举个例子,你想同时映射dev.example.com和test.example.com,配置文件这样写:

tunnels:
  dev:
    proto: http
    addr: 3000
    hostname: dev.example.com
  test:
    proto: http
    addr: 4000
    hostname: test.example.com

启动命令:

ngrok start --config ngrok.yml dev test

运行后你会看到两张在线隧道列表,各自绑定不同域名和本地端口,修改任意一个服务的代码,刷新对应域名就能看到变化,互不干扰。

注意一个细节:addr既可以写端口号,也可以写ip:端口,比如0.0.1:3000,当你的机器上同时挂着MySQL和Redis时,端口冲突的概率很高,建议写全IP和端口,避免ngrok误连到其他服务的默认端口。

自定义域名绑定:如何绕开随机子域名

官方免费域名每次启动都会变,这对多域名场景是个灾难,你昨天发给客户的管理后台链接,今天再打开就404了,所以第二个方案是绑定你自己的域名。

前提条件:你至少有一个域名,且能修改DNS解析记录,ngrok官方账号的基础版(免费)支持一个自定义域名,付费版支持更多,如果你手头只有免费套餐,想同时绑多个自定义域名,就得用下面第三种的思路了。

配置自定义域名的步骤:

  1. 在ngrok后台的Domains页面添加你的域名。
  2. 按提示把一条CNAME记录指向ngrok.io(具体值取决于你的账号区域)。
  3. 在ngrok.yml的对应隧道里,把hostname换成你的域名。
  4. 重启隧道。

这里有个容易踩的坑:CNAME记录生效需要几分钟,但ngrok会立刻校验TXT记录,如果提示Hostname not found,多半是解析还没同步,等几分钟再试,别反复重启客户端。

自建ngrok服务端:多域名无限制的本质解法

免费版和付费版都受官方配额限制,如果你要同时管理几十个测试域名,或者客户给了独立的子域名做联调,自建服务端才是长久之计,本质是把ngrok的客户端和服务端都部署到自己的服务器上,域名完全由你控制。

你需要准备:

  • 一台有公网IP的Linux服务器
  • 一个已经解析到你服务器的域名(支持泛解析最佳)
  • 编译好的ngrok服务端程序(ngrokd)

操作路径概括如下:

  1. 在服务器上解压ngrok服务端,生成自签名证书(生产环境建议用正式证书)。
  2. 修改服务端启动参数,绑定httpAddr、httpsAddr和tunnelAddr。
  3. 客户端连接时指定server_addr为你服务器IP和隧道端口。
  4. 通过泛解析.test.yourdomain.com,让客户端任意指定子域名。

自建方案的优缺点得分清楚:

  • 优点:域名数量无限制,流量不走ngrok官方,隐私可控。
  • 缺点:需要维护服务器、处理HTTPS证书续期、网络速度取决于你的服务器带宽。

对大多数中小团队而言,先花一天时间搞定自建,后续所有联调环境都能统一管理,比每个月给官方交订阅费划算,但如果你只想临时演示一两个域名,用方案一或方案二就足够。

各方案对比:选型看这张表就够了

维度 官方代理(默认) 官方自定义域名 自建服务端
域名数量 1个随机域名 按套餐数量 理论无限
域名稳定性 每次重启变化 固定 固定
配置难度 极低 低 高
成本 免费 有免费额度,收费档位多 服务器费用+维护时间
适用场景 临时演示、快速联调 正式测试环境 多团队、多项目长期使用

ngrok自定义域名价格与免费版限制

很多人搜这一步是想知道到底要花多少钱,行业共识认为,ngrok的付费体系按域名数量、并发连接数和带宽分层,且不同地区价格略有差异,截至当前的公开信息,官方免费版包含1个静态域名和1个自定义域名,但连接数和吞吐量受限,高峰期容易断连。

如果你只用官方域名,免费版就够做基础联调,但需要注意两个限制:

  • 免费域名有随机性:每次重启ngrok,域名前段会变,后端保持一致。
  • 并发隧道数限制:免费版同时只开2条隧道,意味着你用配置文件启动3个名字时,第三个会直接报错。

对多数个人开发者来说,同时跑2条隧道已经覆盖常见场景:一个前端一个后端,如果你非要同时挂3个以上,要么升级套餐,要么走自建路线。

多域名ngrok的常见坑与避坑指南

端口冲突和隧道名冲突

当你在配置文件里给两个隧道指定了同一个addr,ngrok不会报错,但两个域名会同时转发到同一个端口,如果你本意是想让不同域名走不同服务,这种错误特别隐蔽,排查方法很简单:启动后看每一行隧道后面的Forwarding字段,确认端口和域名对应关系。

域名解析残留问题

从官方自定义域名切到自建服务端时,原来的CNAME记录可能还指向旧地址,如果服务端日志一直显示Failed to resolve hostname,多半是你本地hosts或者DNS缓存没刷新,在macOS或Linux上执行:

sudo dscacheutil -flushcache

Windows上执行:

ipconfig /flushdns

免费隧道的不稳定性

统计显示,免费版隧道在长期连接时有一定概率出现断流,尤其是长连接WebSocket场景,如果你的联调需要长时间保持连接,建议在代码里加上自动重连逻辑,或者直接使用付费自定义域名。

ngrok多域名的核心就是编好配置文件,让每个域名对应一个明确的内网服务,人少用官方免费版,人多用自建服务端,最忌的是不加规划就临时开一堆终端窗口,你只要先把域名需求和端口映射列清楚,再选一个方案落地,整个联调效率会提升一个档次。

Q&A:ngrok多域名配置相关

问:ngrok多个域名同时在线会影响网速吗?

答:会,所有流量都经过ngrok的转发服务器,你的本地带宽和ngrok服务端的带宽共同决定实际速度,如果同时跑两个视频流项目,延迟和卡顿会明显比单条隧道严重,局域网内联调建议改用局域网IP,避免绕公网。

问:ngrok自定义域名必须用HTTPS吗?

答:ngrok会自动为自定义域名配置HTTPS证书,你不需要手动生成,但如果你在自建服务端上为自己的域名启用HTTPS,需要确保证书包含所有子域名,通配符证书是最常见的做法,否则浏览器会报证书不匹配。

问:ngrok配置文件支持环境变量吗?

答:支持,在ngrok.yml里可以使用${VAR}语法引用环境变量,例如addr: ${LOCAL_PORT},这样你能在同一个配置文件中管理多套环境,启动前动态指定端口,避免每次改文件,这是不少团队在CI流程中的常用做法。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱