ngrok让服务近在咫尺
简介
最近在和一个第三方服务做联调,即我方服务调用第三方的服务 API-A,然后第三方把结果回调给我方服务 API-B,因为我是在本地搭建的 SpringBoot
服务,又涉及到频繁的改动,所以就没有部署到远程服务器上面。
API-A 回调到 API-B 需要我方服务能被外网访问,如是我就使用了 ngrok
这个工具进行了内网穿透,让第三方服务很容易的就访问到我的本地服务。
所谓的内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。
下面具体讲一讲该工具的安装、配置和使用。
配置
Step1:下载工具
点击 这里 可以进入下载页面根据自己所在的平台选择下载 ngrok
。
目前 ngrok
支持 Mac OS X、Linux Mac (32-bit) 、Windows (32-bit)、Windows (64-bit)、 Linux (ARM)、 Linux (ARM64) 、Linux (32-bit) 、FreeBSD (64-Bit) 、FreeBSD (32-bit) 等操作系统。
我使用的是 Windows 系统,下面我以此系统安装配置做一个说明。
下载完成后,解压到你的磁盘任意目录,如我的放到了下面目录中:
Step2:配置 ngrok
配置 ngrok 需要在其官网注册一个账号,点击 Sign UP 完成注册即可。
注册完成之后进入 控制台,获取你的 Your Authtoken,复制一下即可后面有用。
打开 Windows 自带的命令行工具(CMD,曹孟德),执行下面
1 | ./ngrok.exe authtoken 'your-authtoken' |
完成后,会在 C:\Users\your-name\.ngrok2\ngrok.yml
文件中注册成功。
Step3:启动 ngrok
我的服务端口号是 8080
, 执行下面命令:
1 | ./ngrok.exe http 8080 |
可以在命令行看到如下输出:
1 | Session Status online |
接下来,我们访问 SpringBoot
的服务 API,如下:
1 | http://1a9d2e7e1e2d.ngrok.io/pay/callback |
或者访问 HTTPS 也可以的。
1 | https://1a9d2e7e1e2d.ngrok.io/pay/callback |
在外网访问这个接口也是没有问题的。
场景
内网穿透工具 ngrok
还有其他使用场景。
外网连接自己的内网服务器,在外网演示内网 WEB 站点;
无需部署开发的服务到外网服务器,快速调试本地程序,比如微信公众号的开发等;
ngrok
支持 HTTP、HTTPS 协议站点,HTTP 协议站点直接升级为 HTTPS 站点;ngrok
支持 TCP,UDP 协议端口转发。ngrok
支持数据库、SSH、远程桌面、网络摄像头等等开放到外网可以访问;
还有其他的内网穿透工具,大家可以自行搜索。
你以为的不一定是你以为的