利用ngrok实现内网穿透服务
从公网访问内网部署的服务有很多方式,像花生壳的商业内网穿透服务,免费的速度慢操作麻烦。本文介绍一个开源的软件 ngrok 内网穿透服务,使用ubuntu搭建代理转接服务器,将外网的请求转接到内网,实现从公网无障碍高速访问内网服务。
ngrok是用golang写的, 搭建ngnork需要安装较高版本的go开发运行包。目前支持Mac OS Window 32位/64位 Linux 32位/64位 Liunx ARM/ARM64 FressBSD 32位/64位。
简单配置
首先到ngrok官网下载软件。
在ngrok官网注册一个账户,注册完登陆后可以在https://dashboard.ngrok.com/get-started/setup页面上查看安装过程,步骤如下
Linux 或Mac OS X 下你可以在终端使用unzip 解压ngrok。Windows直接解压缩就可以。
1 |
unzip ngrok-stable-linux-amd64.zip |
执行下面命令,注册authtoken
1 |
./ngrok authtoken <your authtoken> |
返回Authtoken saved to configuration file: /Your Path/.ngrok2/ngrok.yml
运行帮助命令如下
1 |
./ngrok help |
返回结果如下

运行下面命令启动http服务
1 |
./ngrok http 80 |
返回结果如下

打开上图里http://4c27dc4d4a86.ngrok.io/ 或者https://4c27dc4d4a86.ngrok.io/就可以通过公网访问内网的服务了。
自定义二级域名
ngrok支持自定义二级域名,例如自定义二级域名为jsgang,命令如下
1 |
ngrok http -subdomain=jsgang 80 |
运行完成后,自定义二级域名就可以使用了,自定义二级域名服务需要购买ngrok的套餐。
使用自有域名
ngrok支持自有域名,例如mac.example.com,命令如下
1 |
ngrok http -region=us -hostname=mac.example.com 80 |
运行成功后,就可以使用自有域名访问了,使用自有域名也是需要购买ngrok的套餐。
目前免费的套餐只支持下面功能:
- 随机urls或ports的HTTP/TCP 隧道
- 1 ngrok在线进程
- 4 隧道/ngrok 进程
- 40 链接/分钟