最近,在服务器的开发中,有必要公开内部网的服务,以便在家里可以访问。

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