ngrok(NGROK服务器)
大家好,今天本篇文章就来给大家分享ngrok,以及NGROK服务器对应的知识和见解,内容偏长哪个,大家要耐心看完哦,希望对各位有所帮助,不要忘了收藏本站喔。
1内网穿透 ngrok 服务器搭建与坑点
标签(空格分隔): 开发工具 前端
[toc]
前端开发,有时候需要给外网的测试人员浏览,此时若没有专门的测试服务器,那么使用内网穿透就是最简便通用的方式了。一个常见的选择就是 ngrok 。 也有 frp
ngrok官网
本地客户端跑起,搭建内网端口隧道给外网服务器,用户访问外网服务器对应地址,自动映射到本地对应地址。
这个方案很简单,也很慢,超慢,无法忍受的慢。
官网教程参看
从零搭建参看,
已经写好的搭建脚本,参看
如果脚本安装失败,可能是有些依赖没有,例如 apt-get
如果脚本失败,可能是依赖没装好,一般就是 go 没装,试下下面
安装 go
如果没有 apt-get yum,使用下面
按教程的做法是这样的
开启服务后,服务端报错 Failed to read message: remote error: bad certificate , 客户端端报错 x509: cannot validate certificate for xx.xx.xx.xx because it doesn't contain any IP SANs
搜索客户端报错,按 此文解决 ,在最后一句生成证书的命令前加上以下命令,就解决了
ngrok 客户端会自动生成一个随机子域名或者用户自定义一个,总之无论如何都会有一个域名,这就会导致 ip 域名无效, 例如 - localhost:80 , 解决办法就是改源码,去掉随机生成的 subdomain
删掉 %x. rand.Int31() , 以及该文件第一行引入的 math/rand ,重新编译出服务端与客户端即可。这样不加 -subdomain 选项就不会有子域名
2利用老毛子padvan路由器ngrok内网穿透搭建服务器
1、移步 注册用户名并且开启免费的隧道。
2、开通隧道
3、在【隧道管理】中,点击隧道的【id】,查看隧道的完整信息,基中【隧道域名】【服务器地址】【服务器端口】【赠送域名】之后配置路由器需要用到。
4、将以上信息添加至潘多拉路由器
5、【启用Ngrok内网穿透】开关开启,ngrok【服务器地址】填入1.4中【服务器地址】,【服务器端口】填写4443,【自定义域名映射】开关启用,【协议类型】http,【本地端口】80,【自定义域名】填写1.4中【赠送域名】,填完完毕【应用本面设置】
6、在 ngrok.cc 网站,的【隧道管理】,点击【查看状态】,显示ip,表示隧道服务正常.
7、隧道服务正常,打开1.4【赠送域名】,就可以打开路由器设置.
8、改用自己的域名
8.1 隧道管理-编辑
3termux内网穿透-ngrok
具体链接地址获取方式
修改前后可以用命令:ls -la 查看ngrok权限情况
运行验证一下
也可以拷贝ngrok到bin目录方便全局访问
这样可以直接用
通过cat $HOME/.ssh/id_rsa.pub查看到的值直接复制粘贴到ngrok后台,下图路径。
注意在运行ngrok之前需要运行:termux-chroot
我这里用的是默认8080端口,
好了 搞定
要是没有运行termux-chroot 报错如图类似错误
4ngrok服务需要的三级域名解析设置
这个我没法讲的很透彻,因为我的服务器是架设在阿里云,我的域名使用的是阿里云旗下的万网,那么如果服务商不同,那么设计的界面和方法估计都有略微的不同,所以我这里只能贴出我在万网的解析设置,以供参考:
*.ngrok中的ngrok为二级域名,这满足我之前服务器所所设定ngrok.gamecc.cn这个ngrok的主域名,而*是域名设置中的通配符,代表可以接受 http://任意名称.ngrok.gamecc.cn这种域名解析设置。
没有什么神奇的。。。就这样即可,但是值得注意的是*这种通配符咱只能这样用一次,什么意思呢?
就是在万网的域名解析设置列表中,只能有这样一个使用*的解析。所以自己考虑,我这里之前为了方便学生使用,所以才这样设置的。当然还有解决办法就是我写一个系统专门来解决ngrok的验证问题,提供web界面用户需要注册或者赋予特定权限后,才能使用三级域名系统,以及ngrok提供的反向代理服务。例如ngrok.com,以及国内的ngrok.cc这样的网站。
5Ngrok中文文档
ngrok允许您将本地计算机上运行的Web服务器公开到Internet。 告诉ngrok你的网络服务器正在侦听哪个端口。
如果您不知道Web服务器正在侦听哪个端口,那么它可能是端口80,默认为HTTP。
示例:将本地计算机的端口80上的Web服务器暴露给Internet
当您启动ngrok时,它将在您的终端中显示一个UI,其中包含您的隧道的公共URL以及有关通过隧道进行连接的其他状态和度量信息。
ngrok控制台UI
ngrok提供了一个实时的网络用户界面,您可以在其中内省您通过隧道运行的所有HTTP流量。 启动ngrok之后,只需在Web浏览器中打开 http:// localhost:4040 即可查看请求详细信息。
尝试向您的公开网址发出请求。 之后,回顾检查界面。 您将看到请求和响应的所有详细信息,包括时间,持续时间,头,查询参数和请求负载以及电线上的原始字节。
详细反思HTTP请求和响应
开发由外部API发布的Webhook可能会通过要求您进行一些工作(如拨打电话)来触发挂接请求,从而减慢开发周期。 ngrok允许您通过单击重播任何请求,大大加快了迭代周期。 点击Web检查用户界面上任何请求右上角的“ 重播”按钮重播。
一次点击即可重播任何针对您的隧道式网络服务器的请求
ngrok特别支持在网络上使用的最常见的数据交换格式。 请求或响应主体中的任何XML或JSON数据将自动为您打印并检查语法错误。
突出显示JSON语法错误的位置
在进一步部分描述的ngrok.com服务的许多高级功能要求您 注册一个帐户 。 注册后,您需要使用信息显示板上显示的authtoken配置ngrok。 这将授予您访问仅帐户功能的权限。 ngrok有一个简单的'authtoken'命令,使这很容易。 在引擎盖下,所有authtoken命令都是在 ngrok配置文件中 添加(或修改) authtoken 属性。
安装你的authtoken
ngrok为您打开的HTTP隧道分配随机的十六进制名称。 这是一次性的个人用途。 但是,如果您在hackathon中显示该URL或与第三方Webhook集成,则如果隧道名称更改或难以阅读,则可能会令人沮丧。 您可以使用 -subdomain 开关为隧道网址指定自定义子域。
示例:密码保护您的隧道
您的隧道不会显示为 ngrok.io 的子域, ngrok.io 可以在您的域上运行ngrok隧道。 要在 dev.example.com 运行隧道,请按照下列步骤操作:
示例:在自定义域上运行隧道
注意:通过HTTPS访问自定义域隧道仍然可以工作,但证书不匹配。 如果您有TLS证书/密钥对,请尝试使用TLS隧道。
ngrok记录您的隧道上的每个HTTP请求和响应以进行检查和重播。 虽然这对开发非常有用,但是当您在生产服务上运行ngrok时,您可能希望禁用它以实现安全性和性能。 使用 -inspect 开关来禁用您的隧道检查。
示例:没有检查的http隧道
转发到本地端口时,ngrok根本不修改隧道HTTP请求,它们在接收到字节时被复制到服务器字节。 一些应用服务器(如WAMP,MAMP和pow)使用 Host 头来确定要显示的开发站点。 因此,ngrok可以使用修改的主机头重写您的请求。 使用 -host-header 开关重写传入的HTTP请求。
如果指定了 rewrite ,则 Host 头将被重写,以匹配转发地址的主机名部分。 任何其他值将导致将 Host 头重写为该值。
将主机头重写为“site.dev”
将主机头重写为'example.com'
HTTPS隧道使用ngrok.com证书终止ngrok.com服务器上的所有TLS(SSL)流量。 对于生产级服务,您需要使用自己的TLS密钥和证书对您的隧道流量进行加密。 使用TLS隧道,ngrok非常方便。
将TLS流量转发到端口443上的本地HTTPS服务器
隧道运行后,尝试使用卷曲进行访问。
6ngrok使用
授权码
授权命令
授权码和账户是绑定的,在授权命令运行后,ngrok会将授权码保存在~/.ngrok2/ngrok.yml中,所以只需要运行一次,以后都可以使用。
需要注意的是,这里的端口8080可以根据需要替换成其他端口。这条命令的意思是将本地8080端口对应的服务暴露到外网中。
运行后将出现如下结果:
Forwarding,第一个是http协议对应的外网地址,第二个是https协议对应的外网地址。这样,凡是访问 的请求都将发送到localhost:8080。
好了,文章到此结束,希望可以帮助到大家。