本文收录在企业项目实战系列
一、概念用途
1、介绍
ngrok是非常流行的反向代理服务,可以进行内网穿透,支持80端口以及自定义tcp端口转发。这样你就可以运行本地的程序,而让别人通过公网访问了
ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放
2、为什么要使用ngrok?
作为一个Web开发者,我们有时候会需要临时地将一个本地的Web网站部署到外网,以供他人体验评价或协助调试等等,通常我们会这么做:
① 找到一台运行于外网的Web服务器
② 服务器上有网站所需要的环境,否则自行搭建
③ 将网站部署到服务器上
④ 调试结束后,再将网站从服务器上删除
只不过是想向朋友展示一下网站而已,要不要这么麻烦,累感不爱╰(`□′)╯
3、有了ngrok之后,世界是如此的美好
② 运行命令ngrok -authtoken 你的授权码 80,80是你本地Web服务的端口,而之后ngrok会记住你的授权码,直接ngrok 80就OK了
③ 会得到一串网址,通过这个网址就可以访问你本地的Web服务了
二、安装
1、官网下载,解包
地址https://link.jianshu.com/?t=https://ngrok.com/download下载, 解压
2、rz 并解包
unzip ngrok-stable-linux-amd64.zip -d /app/
三、官网注册账户,获取隧道authtoken
1、注册账户
https://dashboard.ngrok.com/user/signup
2、登录并获取隧道authtoken,且登录后也有详细的教程
3、在linux 上认证隧道authtoken
[root@centos app]# ./ngrok authtoken AuQ3TpQG35JL1HcK5WTM_7666C7RTfjYcZtoQyRHsG
会在/root/.ngrok2/ngrok.yml 下记录隧道authtoken
4、./ngrok -h 可以查询命令帮助
每个命令的详细帮助可以通过‘ngrok help <command>‘来获得。
打开http:// localhost:4040 for ngrok的Web界面来检查流量。
ngrok http 80#用于端口80 Web服务器的安全公共URL
ngrok http -subdomain = baz 8080#port 8080可在baz.ngrok.io
ngrok http foo.dev:80#隧道到主机:端口而不是本地主机
ngrok tls -hostname = foo.com 443#将foo.com的TLS流量传送到端口443
ngrok start foo bar baz#从配置文件启动隧道
四、使用ngrok
1、先准备一个web服务和页面
2、开启ngrok,测试http协议 80端口
(1)开启ngrok 服务,会随机给一个地址,在公网上访问这个地址,即可访问到内网的web服务
[root@centos app]# ./ngrok http 80
3、外网访问,成功
4、为了安全也可以设置登录账户和密码
[root@master app]# ./ngrok http -auth="along:along" 80
5、测试tcp协议 22端口
(1)在内网开启ngrok,指定tcp 22端口
[root@master app]# ./ngrok tcp 22
(2)公网物理机测试
[root@along html]# ssh root@0.tcp.ngrok.io -p11053
五、ngrok 其他功能
1、自定义子域名
因为自动生成的会随机改变,如果想要固定访问域名地址,需要自定义,这个功能需要付费!!!!!!!
举例,新开一个隧道,以`along` 为名称,后面跟Web端口 ngrok http -subdomain=along 8080
① 打开ngrok的面板Reserved(保留的)标签栏, 注册一个想要保留的域名xxx.com
② 点击CNAME按钮,获取DNS CNAME record,也就是后面的xxxx.ngrok.io
ngrok http -hostname=xxxx.com 8000
2、关闭访问检测
ngrok http -inspect=false ‘端口号‘
3、强制访问网址为Http或者https
ngrok http -bind-tls=false site.dev:80
ngrok http -bind-tls=true site.dev:80