代码语言:txt复制
开发过程中,很多时候处于公司内网,而有些时候需要外部能够访问到本地部署的服务,那么我们需要一个中转,其中ngrok就是这样一个比较优秀的服务。
源码编译
代码语言:txt复制证书生成
cd ngrok
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.xxxx.org" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=ngrok.xxxx.org" -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
交叉编译环境
$ GOOS=linux GOARCH=amd64 make release-client
$ GOOS=windows GOARCH=amd64 make release-client
$ GOOS=linux GOARCH=arm make release-client
代码语言:txt复制Linux 平台 32 位系统:GOOS=linux GOARCH=386
Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
Windows 平台 32 位系统:GOOS=windows GOARCH=386
Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
MAC 平台 32 位系统:GOOS=darwin GOARCH=386
MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64
ARM 平台:GOOS=linux GOARCH=arm
启动服务器
代码语言:txt复制$ nohup ngrokd -domain="ngrok.xxxx.org" -httpAddr=":8088" -httpsAddr=":8089" &
启动客户端
ngrok.cfg
代码语言:txt复制server_addr: “ngrok.xxxx.org:4443"
trust_host_root_certs: false
start client
代码语言:txt复制$ ngrok -subdomain demo -config=./config.cfg 4000
wechat oauth support
代码语言:txt复制upstream ngrok {
server 127.0.0.1:8088; # 此处端口要跟 启动服务端ngrok时指定的端口一致
keepalive 64;
}
server {
listen 80;
server_name *.ngrok.xxxx.org;
#charset koi8-r;
#access_log /var/log/nginx/log/ngrok.log main;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host:8088; #此处端口要跟 启动服务端ngrok 时指定的端口一致
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://ngrok;
}
}
参考
- https://morongs.github.io/2016/12/28/dajian-ngrok/