ngrok固定域名是内网穿透场景下的刚需,解决的是每次重启服务后公网地址随机变动的问题,核心方案是通过付费套餐预留自定义域名,搭配本地配置文件或API参数实现持久化访问。
ngrok固定域名到底是什么
ngrok本身是一个反向代理工具,把本地服务暴露到公网,免费版每次启动都会生成一个随机子域名,比如abc123.ngrok.io,重启后地址就变了,固定域名就是让你拥有一个永远不变的子域名,比如myapp.ngrok.io,无论本地服务重启多少次,这个地址始终指向你的机器。
固定域名不是免费功能,ngrok官方把它放在付费套餐里,最基础的付费版就能支持一个固定域名,价格按年订阅,国内用户可能会问ngrok固定域名怎么收费,官方定价是每月8美元左右,按年付费折算下来每月更低,这个价格包含的流量配额比免费版高不少,具体数值官方页面会实时更新。
如果你只是临时演示一个页面给客户看,免费版随机域名够用,但做微信小程序回调、企业微信应用配置、GitHub webhook测试,固定域名几乎是必须的,因为这些平台要求回调地址稳定,域名一变就得重新配置。
如何配置ngrok固定域名
第一步:购买并确认你的固定域名
登录ngrok官网,进入Dashboard的Domains页面,创建一个新域名,系统会自动分配类似yourname.ngrok.io的地址,如果你有自定义域名,可以在DNS层面添加CNAME记录指向ngrok分配的域名,也能实现固定访问。
购买套餐后,你的账户里会有一个Reserved Domains列表,那个就是你的固定域名,后续所有配置都围绕它展开。
第二步:修改本地ngrok配置文件
打开本机的ngrok配置文件,位置在~/.ngrok2/ngrok.yml(Windows是C:Users你的用户名.ngrok2ngrok.yml),把固定域名写进去:
version: "2"
authtoken: 你的认证token
tunnels:
web:
proto: http
addr: 8080
domain: yourname.ngrok.io

保存后重启ngrok,执行ngrok start web,这时你看到的公网地址就是你的固定域名,不再随机。
有些场景下你需要同时暴露多个服务,可以在tunnels下面配置多个节点,每个节点指定不同的本地端口和固定域名,只要你有足够的域名配额,完全可以实现一个域名对应一个本地服务。
第三步:命令行直接指定固定域名
不修改配置文件也行,启动时用参数指定:
ngrok http 8080 --domain=yourname.ngrok.io
这种方式适合临时测试,如果经常用,还是建议写进配置文件,省得每次敲参数。
ngrok固定域名和免费随机域名的区别
使用场景差异是核心,随机域名适合五分钟内的临时演示,固定域名适合长期对接外部平台,下表对比两者的关键差异:
| 对比维度 | 免费随机域名 | 固定域名 |
|---|---|---|
| 地址稳定性 | 每次重启都变 | 永久不变 |
| 访问速度 | 受免费带宽限制 | 付费节点,带宽更高 |
| 可配置性 | 仅HTTP/HTTPS | 支持TCP、TLS终端等高级功能 |
| 域名自定义 | 不可选 | 可自定义前缀 |
| 费用 | 免费 | 按月/按年付费 |
| 典型用途 | 临时测试、分享截图 | 小程序回调、API调试、游戏联机 |
很多开发者纠结ngrok固定域名和免费域名哪个好,答案很明确:看你的服务是否需要长期对外提供接口,如果只是自己本地调试,免费版够用;一旦对接第三方平台,别犹豫,直接上付费。
有一点容易忽略:免费版随机域名在并发请求较高时会被限流,页面上可能出现”Tunnel Session Failed”的错误,固定域名所在的付费实例有独立的带宽配额,高峰期稳定得多。

固定域名断线重连怎么处理
ngrok进程挂了或网络断了,固定域名不会消失,但隧道也不可用,需要恢复时,重新运行ngrok start web即可,要想自动重连,可以用supervisor或systemd守护ngrok进程。
作为系统服务运行的方式很简单,写一个systemd单元文件:
[Unit] Description=ngrok tunnel After=network.target [Service] ExecStart=/usr/local/bin/ngrok start web --config=/home/user/.ngrok2/ngrok.yml Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
保存到/etc/systemd/system/ngrok.service,执行systemctl enable --now ngrok,这样即使服务器重启,ngrok也会自动拉起,固定域名始终可用。
本地开发机用类似思路,Windows下可以创建计划任务,触发器设为系统启动时执行,如果你用的是macOS,brew services也提供类似的守护功能。
固定域名在实战场景中的表现
微信本地开发调试
做微信公众号或小程序的本地开发,回调地址必须是HTTPS且不能带端口,用固定域名加https协议,配合ngrok提供的TLS证书,能省去一堆测试麻烦,具体操作是先在公众平台后台把URL填成https://yourname.ngrok.io/api/wx,然后本地启动服务监听8080端口,ngrok把HTTPS流量转成HTTP到本机,整个过程不需要自己申请证书。
内网服务器管理
家里或公司内网有台NAS或者开发服务器,想在外面随时访问,固定域名配合基本认证,相当于给内网服务发了一张公网名片,注意做好访问控制,因为公网任何人都能到达这个域名,建议在ngrok配置中设置basic_auth字段:
tunnels:
nas:
proto: http
addr: 5000
domain: mynas.ngrok.io
basic_auth:
- admin:password123
连接工作流自动化
GitHub Actions或Jenkins构建完成后,需要通知本地跑着的某个服务,固定域名配合webhook,每次构建都能准确触达本地进程,业内专家指出,这种做法在个人开发者的CI/CD流程里越来越普遍,省去了购买云服务器的开销。

常见问题排查
固定域名无法访问
先确认本地服务是否真的在运行,curl http://localhost:8080能不能通,再检查ngrok进程是否存活,ngrok status命令会显示隧道在线状态,如果显示offline,大概率是认证token过期或者套餐到期。
域名配置文件不生效
修改ngrok.yml后,需要完全退出ngrok进程再重新启动,有些版本改动配置会热加载,但保险起见还是重启一遍,另外注意YAML文件的缩进,ngrok对格式敏感,一个空格错了就识别不了。
国内访问速度不稳定
ngrok官方服务器在国外,国内网络环境访问时可能出现延迟偏高现象,这是物理距离决定的,不是配置问题,如果对国内访问有严格要求,可以考虑服务商提供的ngrok镜像服务,但那些通常需要自己部署服务端。
Q&A:关于ngrok固定域名的高频问题
问:ngrok固定域名多少钱一年?
答:官方按年订阅的基础套餐包含一个固定域名,折合人民币六百多一年,海外支付用信用卡或PayPal,国内用户购买可能遇到支付限制,部分人选择购买他人代充服务,注意安全风险。
问:免费版能不能用固定域名?
答:不能,免费版只有随机域名,ngrok官方规定固定域名属于付费套餐功能,即使通过配置文件写domain字段,免费账户也会返回ERR_NGROK_6022错误,提示你升级套餐。
问:固定域名可以绑定多个本地端口吗?
答:一个固定域名同一时刻只能对应一个端口,想同时暴露多个服务,需要为每个服务申请独立的固定域名,ngrok的付费套餐支持添加多个域名,按需购买即可。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/754423.html

