0


Linux搭建Ngrok服务器详细过程

目录

1.安装前置软件

安装git
#安装命令
yum -y install git

2.go语言环境

1.安装go语言并解压到/usr/local/目录下,目录可以自己换别的,go语言版本也可以换高级点的

wget https://storage.googleapis.com/golang/go1.12.0.linux-amd64.tar.gz
tar -C /usr/local/ -zxvf go1.12.0.linux-amd64.tar.gz

2.配置go语言的环境变量
1)打开配置文件

vi /etc/profile

2)在最下面新增以下代码

export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

3)重新加载配置文件

source /etc/profile

3)验证go是否安装成功

go version

结果显示版本信息就表示安装成功

[root@localhost bin]# go version
go version go1.12.0 linux/amd64

3.下载Ngrok

1)使用大佬已处理好依赖的ngrok文件
下载下来会有一个ngrok文件夹,里面有ngrok压缩包,此时将这个ngrok下载到/usr/中,后面解压后就没用了,可以删除这里下载的ngrok文件夹

cd /usr/
git clone https://github.com/haungjianli/ngrok

2)解压里面的ngrok压缩包
这里解压的ngrok是真正的ngrok文件

tar -C /usr/local/ -zxvf ./ngrok.tar.gz

4.详细配置

1)创建证书

使用域名和IP地址两种方式创建证书时配置有部分不同

①使用域名时

#进入ngrok目录
cd /usr/local/ngrok
#使用openssl创建证书
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.site"-days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=ngrok.site"-out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

②使用公网IP地址时

#进入ngrok目录
cd /usr/local/ngrok

#证书(使用IP地址时必须要配置这一行):echo subjectAltName = IP:36.134.235.178 > extfile.cnf

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=xx.xx.xx.168"-days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=xx.xx.xx.168"-out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000 -extfile extfile.cnf

2)复制并覆盖到 assets 构建的时候自动引用

yes|cp rootCA.pem assets/client/tls/ngrokroot.crt
yes|cp device.crt assets/server/tls/snakeoil.crt
yes|cp device.key assets/server/tls/snakeoil.key

3) 生成服务端与客户端
根据自己服务器与客户端的操作系统选择命令。

<!--linux服务端/客户端-->
GOOS=linux GOARCH=386 make release-server (32位)
GOOS=linux GOARCH=amd64 make release-server(64位)

GOOS=linux GOARCH=386 make release-client (32位)
GOOS=linux GOARCH=amd64 make release-client(64位)

<!--Mac OS服务端/客户端-->
GOOS=darwin GOARCH=386 make release-server
GOOS=darwin GOARCH=amd64 make release-server

GOOS=darwin GOARCH=386 make release-client
GOOS=darwin GOARCH=amd64 make release-client

<!--windows服务端/客户端-->
GOOS=windows GOARCH=386 make release-server
GOOS=windows GOARCH=amd64 make release-server

GOOS=windows GOARCH=386 make release-client
GOOS=windows GOARCH=amd64 make release-client

4)启动服务端

#进入到bin目录
cd /usr/local/ngrok/bin
#启动(如果是域名,则把domain中的IP换成域名)./ngrokd -domain="xx.xx.xx.168"-httpAddr=":80"-httpsAddr=":443"-tunnelAddr=":4443"

如果需要后台启动

#后台启动命令
nohup ./ngrokd -domain="xx.xx.xx.168"-httpAddr=":80"-httpsAddr=":443"-tunnelAddr=":4443" & >/dev/null 2>&1 &

端口可以自行设置
①httpAddr是 http的端口,默认80,
②httpsAddr是 https的端口,默认443,
③tunnelAddr是 客户端连接ngrok的端口,默认设置4443

5)启动客户端

以windows为例:
把/bin/windows_amd64/ngrok.exe文件传输到本地。
然后在当前目录下新建文件ngrok.cfg,注意与ngrok.exe在相同目录下。

server_addr:"xx.xx.xx.xx:4443"trust_host_root_certs:false

此处xx.xx.xx.xx需要写服务端所在的IP或者域名,4443为之前设置的tunnelAddr端口

新建脚本start.bat

①直接启动(IP方式或者直接使用服务端配置的域名)

ngrok -config=ngrok.cfg -log=ngrok.log  8080  

8080就是本地需要穿透的端口
norok.log 就是日志的日志的名称

②使用子域名方式启动

ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=xxx 8080  

-log不是必须的,可以删除-log

双击start.bat即可。

如果是以IP地址来穿透,会出现穿透后地址为 xxxxxx.36.134.235.178:80 这种情况,此时无法成功访问,解决办法看最后的问题与解决方案

5.问题与解决方案

1.使用IP地址穿透时,穿透成功的链接地址为xxxxxx.36.134.235.178这种时。

去掉随机生成的 subdomain

ngrok 客户端会自动生成一个随机子域名或者用户自定义一个,总之无论如何都会有一个域名,这就会导致 ip 域名无效, 例如http://41254wg5.36.134.235.178 -> localhost:80, 解决办法就是改源码,去掉随机生成的 subdomain。代码地址:src/ngrok/server/tunnel.go 第89 行

// src/ngrok/server/tunnel.go  #89 行// Register for random URL
    t.url, err = tunnelRegistry.RegisterRepeat(func()string{return fmt.Sprintf("%s://%x.%s", protocol, rand.Int31(), vhost)}, t)

修改后:

return fmt.Sprintf("%s://%s", protocol, vhost)

注意: 删掉 %x. ,rand.Int31(), 以及该文件第一行引入的 math/rand,重新编译出服务端与客户端即可。这样不加 -subdomain 选项就不会有子域名。

重新生成服务端与客户端,再启动

2.生成服务端与客户端时发生错误

go get ngrok/…: malformed module path “ngrok”: missing dot in first path element
make: ***[Makefile:8: deps] Error 1

进入环境配置文件,新增配置

vi /etc/profile
export GO111MODULE=off

重新载入配置文件

source /etc/profile
标签: 服务器 linux git

本文转载自: https://blog.csdn.net/q956095638/article/details/128236394
版权归原作者 学徒级选手 所有, 如有侵权,请联系我们删除。

“Linux搭建Ngrok服务器详细过程”的评论:

还没有评论