ngrok内网穿透服务部署记录
ngrok,一个用于实现内网穿透服务,golang写的,已经很久远的一个东西了,可自己部署的版本最后一个版本是1.7.1,很久也没更新了,但他还是比较稳妥的,基于自己生成openssl证书来编译生成服务器端和客户端,还是具有一定程度的安全性。
一年前,其实已经部署起来了,还专门在码云上fork github的源码,将部署生成的脚本做了一个分支:https://gitee.com/janpoem/ngrok-fork。最近因为要大量迁移主机,所以需要重新配置一次,因此这里就作为一个记录吧。
特别说明,基于他已经不会再更新了,所以还是不要用于正式发布的环境,开发环境使用,完全足够(一年下来,非常稳定,连重启都没试过)。
安装go1.7.6
首先,最后这个版本的ngrok,必须使用go1.7.6(1.7的last版本),下载地址:https://dl.google.com/go/go1.7.6.linux-amd64.tar.gz。然后在你的linux上部署go,嗯,部署go不用我再写说明了吧,go可能是这世上最容易部署的了。
好吧,还是写写,免得自己下次配置的时候忘记了:
tar zvxf go1.7.6.linux-amd64.tar.gz mv go /usr/local/go1.7.6 mkdir /usr/local/gopath/go1.7.6 -p unlink /usr/bin/go # 如果你的机器上装了一个版本的go ln -s /usr/local/go1.7.6/bin/go /usr/bin/go # 先ln上,搞完再恢复就好,没后遗症 nano ~/.bashrc
修改 ~/.bashrc 文件,添加,或者暂时先改为如下:
export GOPATH=/root/gopath/go1.7.6 export GOROOT=/usr/local/go1.7.6
然后,更新一下
source ~/.bashrc
构建ngrok
然后,开始使用 ngrok-fork 的脚本,基于他不再更新了,所以我已经把自己的脚本分支作为默认分支了。
git clone https://gitee.com/janpoem/ngrok-fork.git cd ngrok-fork
修改编译的配置,可以有两个选择:
1. 直接修改 script/predef.sh
2. 创建 user 目录,cp script/predef.sh user/my.sh ,修改my.sh
特别需要填写 NGROK_DOMAIN ,也即用于作为内网穿透服务的域名。比如你希望以:xxx.my.example.com的方式访问自己的PC的话,则 :
NGROK_DOMAIN="my.example.com"
其他需要修改的就是端口号:
DEPOLY_HTTP_ADDR=":8081" # http 的端口号 DEPOLY_HTTPS_ADDR=":8082" # https 的端口号 DEPOLY_TUNNEL_ADDR=":4443" # 本机到服务器的(隧道)端口号
ok,配置好,ngrok.sh支持以下参数:
./ngrok.sh server # 生成2048 bit ssl证书(如果已经执行过,并且存在ssl证书,则不会重新生成),并构建 ngrokd ./ngrok.sh client # 生成客户端,出于某些原因,默认是只生成windows_amd64版本 ./ngrok.sh service # 生成ubuntu的 service 配置 ./ngrok.sh on # 服务启用自动启动 ./ngrok.sh off # 服务停用自动启动
很简单,很弱智吧。然后进入 bin 目录,打包一下 windows_amd64 就可以分发出去了。
打包指令:
7z a w64.7z windows_amd64
什么,你问怎么启动?
service ngrok start service ngrok stop service ngrok status
配置nginx
最简配置:
server { listen 80; server_name *.my.example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host:8081; proxy_redirect off; proxy_pass http://127.0.0.1:8081; } }
美中不足的是,本地的PHP的话,HTTP_HOST还是会显示8081端口,现在上网似乎只找到双ip下的解决方案,我记得一年前似乎解决了这个问题,但现在已经完全不记得了(以后想起来再更新)。也罢,到此为止吧,留个记录,以防下次到处找资料。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaScript对象继承方式
一、对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式)。因为构造函数只是一个函数,所以可使 Parent 构造函数 成为 Children 的方法,然后调用它。Children 就会收到 Parent 的构造函数中定义的属性和方法。例如,用下面的方式定义 Parent 和 Children: ]// 父类构造函数 var Parent = function(name){ this.name = name; this.sayHi = function(){ console.log("Hi! " + this.name + "."); }//前端全栈学习交流圈:866109386 };//面向1-3年前端人员 //帮助突破技术瓶颈,提升思维能力 // 子类构造函数 var Children = function(name){ this.method = Parent; this.method(name); // 实现继承的关键 delete this.method; this.getName = function(){ console.l...
- 下一篇
AudioContext技术和音乐可视化(1)
写在最前,测试博客在这里,直接欣赏完成可视化效果。代码不日在github公开,性能目前巨烂,RadialGradient损耗巨大,优化正在提上日程。 转载注明来源。 扒掉网页上js的烦请留下js里的顶端注释谢谢。。虽然我代码是写的挺烂的。如果转发到别的地方了能注明一下作者和来源的话我会很开心的。 https://th-zxj.club 这是你从未体验过的船新版本 Intro 因为自己搭了个博客,一时兴起,就想写个动态的博客背景。毕竟用django后端渲染,前端只有jquery和bootstrap已经够low了,虽说极简风格也很棒,但是多少有点亮眼的东西才好和别人吹牛不是吗。 为了方便讲解,整个思路分为两个部分:音乐播放和背景绘制。 一、音乐播放 1.1 AudioContext 概述部分懒得自己写,参考MDN的描述。 AudioContext接口表示由音频模块连接而成的音频处理图,每个模块对应一个AudioNode。AudioContext可以控制它所包含的节点的创建,以及音频处理、解码操作的执行。做任何事情之前都要先创建AudioContext对象,因为一切都发生在这个环境之中。 1...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主