安装gcc和git(用于下载ngrok源码)

yum install gcc -y
yum install git -y

安装go语言环境(版本不要大于1.14.15)

yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386
wget https://golang.google.cn/dl/go1.14.15.linux-amd64.tar.gz
tar -zxvf go1.14.15.linux-amd64.tar.gz
mv go /opt/go1.14.15
mkdir /opt/gopath

配置环境变量

vim /etc/profile

追加添加

export GOROOT=/opt/go1.14.15
export GOPATH=/opt/gopath
export PATH=$PATHGOROOT/bin

应用更改

source /etc/profile

安装ngrok

git clone https://github.com/inconshreveable/ngrok.git
cd ngrok
export NGROK_DOMAIN="ngrok.xxx.com"
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj “/CN=$NGROK_DOMAIN” -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj “/CN=$NGROK_DOMAIN” -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key

编译生成ngrokd(服务端)

GOOS=linux GOARCH=amd64 make release-server

编译生成ngrok(客户端)

GOOS=windows GOARCH=amd64 make release-client

配置supervisord ini文件

[program:ngrokd]
directory=/root/ngrok
command=/root/ngrok/bin/ngrokd -domain="ngrok.xxx.com"  -httpAddr=":8888" -httpsAddr=":8443"
autostart=true
autorestart=true
user=root
stdout_logfile=/root/logs/ngrok-stdout.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/root/logs/ngrok-stderr.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB

配置nginx

server {
    listen 80;
    server_name *.ngrok.xxx.com;
    keepalive_timeout 70;
    proxy_set_header "Host" $host:8888;
    location / {
                    proxy_pass_header Server;
                    proxy_redirect off;
                    proxy_pass http://127.0.0.1:8888;
    }
    access_log off;
    log_not_found off;
}

客户端配置

1.拷贝ngrok.exe到本地 2.拷贝assets证书 3.新建ngrok.cfg文件

server_addr: "ngrok.xxx.top:4443"
trust_host_root_certs: false

tunnels:
 ssh:
  remote_port: 22
  proto:
   tcp: 22
 ftp:
  remote_port: 24
  proto:
   tcp: 24
 http:
  subdomain: gitlab
  proto:
   http: 80
   https: 172.3.2.1:443
 web:
  subdomain: test
  proto:
   http: 8080
 cloud:
  subdomain: cloud
  proto:
   http: 5212
 ali:
  subdomain: ali
  proto:
   http: 5000

4.新建log文件夹 5.新建start.bat

启动特定的隧道

./ngrok -config ngrok.cfg start ssh ftp

启用配置文件中所有的隧道

./ngrok -config ngrok.cfg start-all