最近,在服务器的开发中,有必要公开内部网的服务,以便在家里可以访问。
Ngrok是一个反向代理工具,政府可以免费使用,但是由于海外原因非常慢。幸运的是,这组服务是开源的,所以我们可以用开源代码构建一个服务,并自己使用它。
设置Ngrok服务器
1.首先,你需要:
公共网络服务器
已备案的域名
如果没有,可以加我微信说明来意。我愿意免费给你我的。
2.安装Git和Golang
apt-get install build-必备golang mercurial git
Ubuntu自带的golang是1.2,版本很低,需要手动升级,但是垃圾Golang 1.5开始自举,必须自己编译。所以如果你的版本是1.2或者所有低于1.5的版本。
你需要:先升级到1.4,然后用1.4编译安装Golang1.5,再从1.5安装最新版本。
安装高尔夫1.4
戈朗下载地址:https://dl.gocn.io/
先下载一个golang 1 . 4 . 3版,比如我的下载目录在/tmp下
塔尔-xf go1.4.linux-amd64.tar.gz
cd go/src
。/make.bash编译
如果安装成功,输出将是:
所有测试均通过
—
在/home/you/go中安装了适用于linux/amd64的Go。
在/home/you/go/bin中安装了命令。
***您需要将/home/you/go/bin添加到您的$PATH。***
cd /tmp
mv go /{$HOME}/go1.4
将编译后的golang1.4复制到目录{katex parse error:应为' EOF ',在位置5: home处得到' } ',下一步在golan…HOME的目录中找到go1.4。
Katex解析错误:应该是“eof”,在位置5得到“not”:HOME不同的环境是不同的,我的ubuntu…HOME
安装golang1.9
这个地方有个坑。我编译1.8版的时候会卡在中间,编译不了。所以建议不要编译1.8版,直接跳到1.9或者用1.7。
首先下载一个golang版。我的下载目录在/tmp下
Rm -rf go删除最后编译的1.4
塔尔-xf go1.9.linux-amd64.tar.gz
cd go/src
。/all.bash编译
如果安装成功,输出将是:
所有测试均通过
—
在/home/you/go中安装了适用于linux/amd64的Go。
在/home/you/go/bin中安装了命令。
***您需要将/home/you/go/bin添加到您的$PATH。***
cd /tmp
mv go /{$HOME}/go1.9
ln-s/{ $ HOME }/go 1.9/bin/go/usr/bin/go
完成安装
执行命令go版本
编译Ngrok
1、先从GitHub克隆源代码:
git克隆https://github.com/tutumcloud/ngrok.git
2.生产签名证书
当使用ngrok.com的官方服务时,我们使用的是官方的SSL证书。自建ngrokd服务,如果不想买SSL证书,需要自己生成自签名证书,用证书编译一个ngrok客户端。
证书生成需要二级域名。比如我的域名是kymjs.com,我用我的二级域名ngrok.kymjs.com代替。
cd ngrok
NGROK_DOMAIN=ngrok.kymjs.com
openssl genrsa -out base.key 2048
open SSL req-new-x509-nodes-key base . key-days 10000-subject/CN = $ NGROK _ DOMAIN-out base . PEM
open SSL gen RSA-out server . key 2048
open SSL req-new-key server . key-subject/CN = $ NGROK _ DOMAIN-out server . CSR
open SSL x509-req-in server . CSR-CA base . PEM-CAkey base . key-cacreate serial-days 10000-out server . CRT
3.将生成的证书复制到ngrok目录
CP base . PEM assets/client/TLS/ngrockroot . CRT
4.开始编译服务器程序和客户端程序
make release-服务器版本-客户端
编译成功后会在bin目录中找到ngrokd和ngrok两个文件。其中ngrokd是服务器程序。
5.启动服务器程序
/bin/ngrokd-tlsKey = server . key-tlsCrt = server . CRT-domain = ngrok . kymjs . com-HttpAddr =:9080-HttpAddr =:9443
HttpAddr和HttpAddr是ngrok分别用来转发http和https服务的端口,可以随意指定。Ngrokd还将打开一个4443端口,用于与客户端通信。由于我的端口80和443有其他用途,所以我改用了9080和9443。反正端口号无所谓。
6.设置本地客户端
在同一级别目录下创建一个新的配置文件ngrok.cfg
服务器地址:ngrok.kymjs.com:4443
trust_host_root_certs: false
然后命令行启动ngrok客户端
ngrok-config = ngrok . CFG-log = ngrok . log-子域=tomcat 8080
这样,原内网的localhost:8080就成功地呈现给了外网的tomcat.ngrok.kymjs.com:9080
需要注意的事项
如果mac系统通过ssh登录,当您退出当前ssh时,您启动的ngrok进程也将停止。解决方法是先用screen命令启动一个新的进程,然后执行自己的程序:
屏
java -jar xxx.jar
1.《ngrok 使用 Ngrok 实现内网穿透》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《ngrok 使用 Ngrok 实现内网穿透》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1686593.html