需求背景:

  项目需要被其他设备访问,不在同一个局域网。 可以使用ngrok来将开发设备的端口映射至外网,从而达到让其他设备访问的目的。

  本文以阿里云服务器为例,服务器必须有公网地址,配置无所谓,主要起一个转发的作用。

  需要环境git、go

  aliyun自带git

  go语言版本无要求,可以使用yum傻瓜式安装(yum install go -y)

一、下载ngrok

cd /www/ngrok
git clone https://github.com/tutumcloud/ngrok.git

二、生成ngrok使用的https证书

cd /www/ngrok/ngrok
NGROK_DOMAIN="www.*****.top"
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt

注意:第二行部分为服务器的域名

将生成的证书替换

cp base.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key

三、编译服务端

make release-server

生成bin/ngrok

四、编译客户端

GOOS=windows GOARCH=amd64 make release-client

生成bin/windows_amd64/ngrok.exe
ngrok.exe下载到你电脑

五、运行服务端

 后台运行

nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="www.***com" -httpAddr=":3080" -httpsAddr=":3043" >/dev/null 2>log &

注意:上面的域名为步骤二中的域名,这两处需要一致

注意:

  1、3080,3043端口可以改成80,443,如果这两个端口空闲的话。
  2、阿里云安全组开放3080、3043、4443端口,4443是默认的客户端通信端口。
  3、iptables开放3080、3043、4443端口。
  4、添加两条域名解析ngrok和*.ngrok,第二条记得带上*.,不然无法匹配xxx.ngrok.test.com三级域名。

六、运行客户端

创建编辑配置文件ngrok.cfg

server_addr: "www.****.top:4443"
trust_host_root_certs: false

运行

cmd 将目录切换到ngrok的目录,执行以下命令

ngrok -config=ngrok.cfg -subdomain abc 8080

其中

abc  为前置域名

8080  为本地机器需要映射出去的端口

 

下面附图为我的机器客户端启动后的截图

 

 

 


 

版权声明:本文为luxd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/luxd/p/12787444.html