Ngrok实现内网穿透

2,596 阅读5分钟

原生Ngrok

下载Ngrok

进入官网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

执行后效果,表示已经运行成功了,可以通过公网访问

注意,这里 fa9af50fdb50.ngrok.io等价于http://localhost:…

效果一样,这样你的项目的就可以在公网访问了,还可以在DOS窗口中查看到请求结果

Sunny-Ngrok

使用国内的Ngrok,网速更快,配置方面也更简单,而且免费。

下载

国内Ngrok官网地址:www.ngrok.cc/

解压后如下:

注册获取隧道id

还需要关注公众号才能使用

接着需要开通隧道,可以参考官方教程:www.ngrok.cc/_book/gener…

为了测试,买个不付费的

确定开通

开通后如下:

使用

在安装目录下双击执行"Sunny-Ngrok启动工具.bat"

然后输入隧道id

回车后就启动成功,可以使用了,复制网址直接查看效果

浏览器打开网址后,输入用户名和密码

发现访问不了,出现问题了,因为上面的域名地址映射的是"127.0.0.1:80",而我们本地tomcat项目通常使用的端口号是"8080"

所以我们要修改端口号

修改后重新执行本地的bat文件,发现映射的端口变成了8080。

注意,如果本地没有运行项目,那么会提示:

成功映射,实现内网穿透: