# 使用ngrok实现内网穿透以便外网访问
# 1 内网穿透
当我们在本地开发Web应用时,只能在本地访问或在同一个局域网(内网)访问,这带来了极大的限制。比如手机难以访问、其它人员无法访问测试、难以提供接口给外界调用等。通过内网穿透技术,我们能把服务暴露在外网上。
世面上成功的内网穿透软件比较多,如Ngrok (opens new window)、花生壳 (opens new window)、Natapp (opens new window)等,本文采用Ngrok
,因为它足够简单易用,非常方便,有免费功能,更有高级的付费功能。
# 2 使用Ngrok
# 2.1 下载Ngrok
可以到 https://ngrok.com/download 下载,选择对应的版本。而且,它友好地在下载界面提供了简单使用教程,如下图所示:
下载后需要解压。
# 2.2 启动Web应用和Ngrok
本地启动了Web应用,端口为8000
,接着一个命令启动Ngrok如下:
ngrok http 8000
启动Ngrok后:
可以看见,它是有时间限制的,每次只能使用8小时。
现在,我们就可以通过它提供的链接 http://03cb1b6b.ngrok.io 在外网访问了。同时,Ngrok还提供了UI给用户观察请求详情:http://localhost:4040/inspect/http ,可以看历史请求、请求重发、request和response详情:
# 2.3 地区修改
通过增加参数-region=ap
可以指定地区,默认为us
。可支持的区域如下:
Code | Default | Region |
---|---|---|
us | Yes | United States |
eu | Europe | |
ap | Asia/Pacific | |
au | Australia | |
sa | South America | |
jp | Japan | |
in | India |
# 2.4 注册无限长
如果没有注册,每次启动时长只有8小时,注册获得AuthToken
并配置后:
./ngrok authtoken 1ajuqjllY20DWlAqxxx_xxx
就没有时长限制了,这对于简单(贫穷)的开发人员来说,已经足够了。
不得不说,付费版本还是挺贵的,但提供的功能确实也比较多,主要就是在域名、IP、支持优先级、连接容量等方面:
# 3 总结
Ngrok还真是挺方便的,而且永久免费,对于普通开发调试来说,已经足够了,算是很良心了。付费功能虽然强大,但是基于太穷,付费是不可能的了,这辈子不可能付费了。
更多功能请访问官方帮助文档:https://ngrok.com/docs