Ngrok实现内网穿透
Posted 二木成林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ngrok实现内网穿透相关的知识,希望对你有一定的参考价值。
目录
原生Ngrok
下载Ngrok
进入官网https://ngrok.com/download进行下载,Windows系统使用就下载Windows的
注册Ngrok获取authtoken
点击“Sign up"进行注册
输入信息进行注册
注册出现这个提示,那么很难注册成功,因为需要验证,而在国内是不会出现验证选项的,所以需要翻墙科学上网。
科学上网后,就可以注册了
注册成功后跳转的页面是这样的:
点击左侧菜单栏中的"Your Authtoken"中就可以看到我们需要的authtoken了。
准备
创建一个普通的JavaWeb项目。然后创建一个普通的HelloServlet即可。
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().print("Hello Ngrok!");
}
}
使用了@WebServlet注解所以不需要配置web.xml文件,我们把这个项目使用tomcat运行起,在浏览器访问结果如下:
使用
将解压包进行解压,只有一个gnrok.exe文件
通过DOS窗口进入到该目录下
然后执行如下命令(注意:不同版本的Ngrok的命令是不一样的,但如果你执行的命令是错误的它会给出提示,你根据它提示的例子就可以明白正确的命令了):
# 保存密钥到文件中
ngrok authotoken 密钥
# 执行内网穿透
ngrok http -subdomain=二级域名 端口号
各参数注释:
- 密钥就是注册后得到的authtoken
- 二级域名一般是项目名
- 端口号一般是8080
例如
出现如下界面表示成功了,但是这个界面会一闪而过。
因为它收费了,提示如下:
上面的意思是自定义子域名收费了,但是我们可以不自定义子域名啊。
我们只需要执行如下命令即可,不自定义子域名。
ngrok http 8080
执行后效果,表示已经运行成功了,可以通过公网访问
注意,这里 http://fa9af50fdb50.ngrok.io等价于http://localhost:8080,它们是可以相互替换的,但前者能够在公网访问你的项目,但是后者只能在自己的电脑上访问。
效果一样,这样你的项目的就可以在公网访问了,还可以在DOS窗口中查看到请求结果
Sunny-Ngrok
使用国内的Ngrok,网速更快,配置方面也更简单,而且免费。
下载
国内Ngrok官网地址:https://www.ngrok.cc/
解压后如下:
注册获取隧道id
还需要关注公众号才能使用
接着需要开通隧道,可以参考官方教程:https://www.ngrok.cc/_book/general/open.html
为了测试,买个不付费的
确定开通
开通后如下:
使用
在安装目录下双击执行"Sunny-Ngrok启动工具.bat"
然后输入隧道id
回车后就启动成功,可以使用了,复制网址直接查看效果
浏览器打开网址后,输入用户名和密码
发现访问不了,出现问题了,因为上面的域名地址映射的是"127.0.0.1:80",而我们本地tomcat项目通常使用的端口号是"8080"
所以我们要修改端口号
修改后重新执行本地的bat文件,发现映射的端口变成了8080。
注意,如果本地没有运行项目,那么会提示:
成功映射,实现内网穿透:
以上是关于Ngrok实现内网穿透的主要内容,如果未能解决你的问题,请参考以下文章