前言
一般我们在开发的时候都是在内网环境中,服务器访问外部公网接口没问题,但如果出现与第三方接口对接,需要暴露我们的接口供第三方主动调用( 比如支付相关业务 )的情况时,我们内网的 IP 地址显然是外部无法访问的,因此需要有相应的手段应对:第一种方案,配置路由器什么的,比较麻烦;第二种方案,将工程项目部署到公网可访问的服务器上( 比如各种云服务器什么的 ),小题大做;第三种方案,接着看下去。
ngrok
Expose your local server to the internet. 服务器依旧运行在你的本地环境中,使用 ngrok 即可将其暴露给公网,ngrok 会随机生成一个已经验证过的域名地址,外网访问此域名地址,ngrok 则会在自己的服务器上做地址的转换并建立与你本地服务器的连接通道以传递客户端与服务器之间的数据( 就是一个中间人的角色 )。
使用示例
安装 ngrok :前往官网下载并解压即可。
准备服务器:简单的 hello word 即可,如下图
随后启动原有的 node 服务器,nodemon、forever、pm2 原来是怎么启动的,现在也怎么启动。
见证奇迹的时刻:
ngrok http 3000
随后你将会看到下图所示:
咯,公网地址给你了,http 和 https 的都行,为了验证能不能访问,我们在浏览器中输入这个地址试试( 这里没有更改本地 DNS 的 host 文件,所以是当成公网访问的 ),结果如下图:
事实证明有效。
ngrok 在全球有四个服务器,默认使用的是位于美国的服务器,为了提升下响应速度,我们可以使用新加坡的服务器,设置 region 即可:
ngrok http 3000 -region ap
其它的 https 服务器也好、授权认证也好、还是 TLS/TCP 连接,ngrok 都没问题,具体怎么用自己看官方文档吧。
localtunnel
localtunnel 是在 github 上开源的库,而且是 MIT 协议( 如果你对这些协议不了解可以去翻翻我很早之前写的文章 「 被忽视的 License 」),这个项目使用的是个人服务器,只有一个而且在美国,而且不怎么稳定,就因为它开源,所以我还是提一下,毕竟精神可嘉,但是还是建议用 ngrok 。
结束语
ngrok 非常简单实用,虽然它本身是中间人,但是你完全可以使用 https 协议来保证你的数据安全,当然话说回来,这些玩意儿主要也都只是开发的时候测试用用。好了,又愉快的水了一篇文章,大家再见。