安装go语言,安装git

1
yum -y install build-essential golang mercurial git

1.png

下载ngrok源码

2.png

代码目录结构如下:

3.png

生成证书 ,并编译一个携带该证书的ngrok客户端

域名用自己的替换下面的wx.yzblog.xyz,同时在域名解析中增加A记录指向自己这台服务器IP

1
2
3
4
5
6
7
8
9
10
11
12
NGROK_DOMAIN="wx.yzblog.xyz"

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

4.png

将生成的证书替换掉官方的默认证书

1
cp base.pem assets/client/tls/ngrokroot.crt

RTX截图未命名.png

编译源码

会在bin目录下生成两个文件,服务端我们接下来直接运行,客户端我们需要生成window版。

1
make release-server release-client

6.png

运行服务端

1
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="wx.yzblog.xyz" -httpAddr=":80" -httpsAddr=":443"

httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。
ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。
由于微信限制不能出现端口号,因此这个使用了80、443端口。
5.png
7.png

生成客户端

执行对应的命令会在bin目录下生成windows_amd64目录,ngrok.exe就存放在该目录下。将ngrok.exe下载到本地。

1
GOOS=windows GOARCH=amd64 make release-client  

8.png

在本地新建文件夹(名字随便),同时在此文件夹下新建以下文件。
9.png
文件内容分别为:

  1. ngrok.cfg(配置文件)
    1
    2
    server_addr: "wx.yzblog.xyz:4443"  
    trust_host_root_certs: false
  2. startup.bat(启动脚本)
    -config指向配置文件,
    -log存放日志文件位置,
    -subdomain为自定义的域名前缀。
    8080为端口号。
    1
    2
    3
    4
    5
    @echo on
    cd %cd%
    #ngrok -proto=tcp 22
    #ngrok start web
    ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=my 8080

点击启动脚本startup.bat完成启动

参考梦幻逝水大大的教程 :https://blog.csdn.net/yjc_1111/article/details/79353718