许多刚学Javaweb的同学(包括我自己)肯定都非常好奇,如何在外网上访问自己做的项目,跟我们本地访问tomcat有什么区别?
今天就向大家介绍一个非常强大的外网映射工具:ngrok.ngrok可以把你的本地ip(127.0.0.1|localhost)映射成一个公网域名,这样所有人都可以通过这个域名来访问你的项目,这个功能对本地调试,特别是微信公众号开发带来了极大的便利.
示例:
http://localhost:8080/项目名/ -> http://**.ngrok.com/项目名
此处要介绍三个ngrok版本:ngrok,tunnel,sunny-ngrok.
第一个版本是国外开发的原生ngrok版本,这个版本将我们的本地ip映射到一个二级域名上,这个域名有两种形式:自定义主机名和系统分配主机名(主机名为最左边的部分,比如我们平时经常看到的www).这个版本有两个缺陷:
1.系统分配的主机名是动态分配的,即每一次开启都会不一样,所以每次访问的时候都要记住不一样的域名,这很蛋疼.
2.这个域名是在国外的,所以访问速度会相当慢
第二个版本是国内基于ngrok开发的一个改良版,由于域名在国内,所以解决了访问慢的问题,但是这个版本现在已经无法使用
第三个版本也是国内开发出的一个版本,可以自定义主机名,还可以自定义域名(前提是你有一条域名),很好的解决了原生ngrok的那两条缺陷.
1.先说说原生的ngrok,软件官方下载链接: https://ngrok.com/.下载后解压,是一个ngrok.exe的文件.
2.进入DOS命令界面(home+R 弹出运行框,输入cmd回车),进入你解压的目录,我解压在F盘的ngrok文件夹下:cd F:/ngrok
3.输入 ngrok http ‘端口号’.这里要说明两点,第一:老版的ngrok不需要输http,但是那种方法已经不能用了,最新的格式跟我这个一样.第二:端口号要跟tomcat使用的端口号保持一致(这里以tomcat为例),比如你tomcat的conf/server.xml文件中用的是80端口,这里就要写80端口
4.ok,界面如下图所示就证明我们已经映射成功了:
是不是很简单?我们可以开启tomcat服务器,然后登陆到他给我们的域名上去看看是否能正常访问到tomcat的首页
5.当然,上面也说了,这种方法每次换域名很麻烦,那么我们来看看如何获取一个自定义主机名的固定域名:输入 ngrok -help,界面如下图所示:
可以发现最新的命令变成了:ngork http -subdomain=’自定义主机名’ ‘端口号’.
6.按照老版本的步骤,我们此时去官网注册一个账号,获取一个access-token,把这个token往命令行里一输,就可以了.但是现在就算拿到了token,再把最新命令输入,会发现:
他说这功能已经开始收费了,我的账号是免费账号,无法使用这个功能…
在这里我就不付费去实现这个功能了,愿意付费的同学可以去试试这个功能,下面我要介绍的这个版本比原生的要更加强大一些并且目前还是免费的.
1.接着来看看国内的这个工具,官网地址:http://ngrok.cc/
2.首先在平台上注册一个账号,平台登录地址:http://www.ngrok.cc/login
3.登录平台,将系统分配域名(即自定义前缀|主机名)添加好后(我用的是whu-czh),在官网上下载客户端,解压(解压地址F:/sunny_ngrok)
4.修改解压后的ngrok.cfg文件:修改文件中的auth_token(这个token在平台上获得);subdomain:”主机名”(要与平台上添加的主机名一致);http:端口号(与tomcat的端口号一致),修改后如下图所示:
其他的不用去管,保存后在DOS下输入命令:
ngrok.exe -config ngrok.cfg start web
注意:命令中的web跟ngrok.cfg中的通道名称web保持一致,若文件中你改成了haha ,那命令中也要输 haha.
到此本地ip就映射成功了,将本地ip映射到自己购买的域名上的方法会在”微信公众号开发之URL申请”中讲解
5.windows下直接执行Sunny-Ngrok启动工具.bat文件,输入从http://www.ngrok.cc/login注册后获得的隧道ID就可以用了