Bootstrap

ngrok window 版本编译及配置相关

#ubuntu 20.04.1
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

#安装go语言 git等
guorp@guorp-VirtualBox:~$ sudo apt-get install build-essential golang mercurial git
[sudo] password for guorp: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
。。。
#查看go的版本
guorp@guorp-VirtualBox:~$ go version
go version go1.13.8 linux/amd64

#使用git获取ngrok源码
guorp@guorp-VirtualBox:~$ git clone https://github.com/tutumcloud/ngrok.git ngrok
Cloning into 'ngrok'...
。。。
#设置全局变量代理的父级域名
guorp@guorp-VirtualBox:~$ export NGROK_DOMAIN="ngrok.e***.com"
#切换到ngrok目录
guorp@guorp-VirtualBox:~$ cd ngrok
#查看变量设置
guorp@guorp-VirtualBox:~/ngrok$ export
。。。
declare -x NGROK_DOMAIN="ngrok.e***.com"
。。。

#生成证书(openssl系统默认已安装)
guorp@guorp-VirtualBox:~/ngrok$ openssl genrsa -out base.key 2048
。。。
guorp@guorp-VirtualBox:~/ngrok$ openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
。。。
guorp@guorp-VirtualBox:~/ngrok$ openssl genrsa -out server.key 2048
。。。
guorp@guorp-VirtualBox:~/ngrok$ openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
guorp@guorp-VirtualBox:~/ngrok$  openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
Signature ok
subject=CN = ngrok.e***.com
Getting CA Private Key
#生成成功
guorp@guorp-VirtualBox:~/ngrok$ ls
assets    base.pem  contrib       docs     Makefile   server.crt  server.key
base.key  base.srl  CONTRIBUTORS  LICENSE  README.md  server.csr  src
#复制证书
guorp@guorp-VirtualBox:~/ngrok$ cp base.pem assets/client/tls/ngrokroot.crt
#编译Linux版本
guorp@guorp-VirtualBox:~/ngrok$ sudo make release-server release-client
[sudo] password for guorp: 
GOOS="" GOARCH="" go get github.com/jteeuwen/go-bindata/go-bindata
。。。
go install -tags 'release' ngrok/main/ngrokd
go install -tags 'release' ngrok/main/ngrok
#linux版本生成功
guorp@guorp-VirtualBox:~/ngrok$ sudo GOOS=windows GOARCH=amd64 make release-server release-client

 #nginx   配置

 server {
        listen       80;
        server_name  *.ngrok.****.com; #公网域名
        location / {
              proxy_pass  http://127.0.0.1:81; 服务器端的映射地址
              proxy_redirect off;
              proxy_set_header   Host $http_host:81;
              #proxy_set_header   Host             $host:81;
              proxy_set_header   X-Real-IP        $remote_addr;
              #proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
              proxy_connect_timeout 1; 
              proxy_send_timeout 120; 
              proxy_read_timeout 120;
        }
 
    }

开放服务器 4443端口

 增加子级域名解析

服务端启动命令:

ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="ngrok.****.com" -httpAddr=":81" -httpsAddr=":443" -log ngrokd.log

 

客户端配置:  

ngrok.cfg
server_addr: "ngrok.***.com:4443"
trust_host_root_certs: false

客户端启动命令

#日志文件名/配置文件/子级域名/本地服务端口号
ngrok -log=log -config=ngrok.cfg -subdomain prject 8080
;