在开发过程中,我们常常需要将本地服务暴露到公网,以便进行远程调试、接口测试或演示分享。Ngrok 是一款强大的内网穿透工具,能够帮助我们快速实现这一需求。
什么是 Ngrok?
Ngrok 是一个反向代理工具,通过在公共端点和本地运行的 Web 服务器之间建立安全的隧道,将本地服务映射到公网地址。它的主要特点包括:
- 外网访问本地服务:无需公网 IP 或复杂的网络配置,轻松实现本地服务的公网访问。
- 临时公网地址:为本地服务提供临时的公网地址,方便快捷。
- 安全隧道:建立加密的通信隧道,确保数据传输的安全性。
- 实时更新:实时更新公网地址,确保访问的稳定性和可靠性。
安装与配置
- 注册账号:访问 Ngrok 官网 注册一个账号。
- 下载客户端:根据操作系统下载相应的 Ngrok 客户端。
- 配置 Authtoken:登录后,在控制台获取你的 Authtoken,并在终端执行以下命令:
./ngrok config add-authtoken <你的_authtoken>
启动本地服务并建立隧道
假设你在本地运行了一个监听 8080 端口的服务,执行以下命令即可将其暴露到公网:
./ngrok http 8080
执行后,Ngrok 会生成一个类似于 https://xxxx.ngrok.io
的公网地址,外部用户可以通过该地址访问你的本地服务。
使用固定域名(付费功能)
默认情况下,Ngrok 为每次启动的隧道分配一个随机的子域名。如果你希望使用固定的子域名,可以在 Ngrok 控制台中进行配置:
- 在控制台的 “Reserved” 部分添加一个子域名。
- 启动隧道时,指定该子域名:
./ngrok http -subdomain=yourdomain 8080
注意:使用固定子域名是 Ngrok 的付费功能。
同时暴露多个服务
如果你需要同时暴露多个本地服务,可以通过配置 ngrok.yml
文件来实现:
- 创建或编辑
ngrok.yml
文件,添加多个隧道配置:
tunnels:
web:
proto: http
addr: 8080
api:
proto: http
addr: 5000
- 启动所有隧道:
./ngrok start --all
这样,你的多个本地服务就分别通过不同的公网地址暴露出去。
应用场景
Sever A上面启动了一个服务,暴露在8000端口,在Server B上面想要访问,可以直接执行 ngrok http 8000
命令,然后会生成一个公网的URL
通过这个URL即可访问