#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