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
2
3
4
5
6
7
Session Status online
Account name (Plan: Free)
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://1a9d2e7e1e2d.ngrok.io -> http://localhost:8080
Forwarding https://1a9d2e7e1e2d.ngrok.io -> http://localhost:8080

接下来,我们访问 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、远程桌面、网络摄像头等等开放到外网可以访问;

还有其他的内网穿透工具,大家可以自行搜索。


你以为的不一定是你以为的

坚持原创技术分享!