ngrok+nginx+supervisor 配置
2019-06-10 本文已影响0人
faddei
编译参考
#安装
yum install golang git
cd /usr/local
git clone https://github.com/inconshreveable/ngrok.git ngrok
#生成证书
cd ngrok
NGROK_DOMAIN="ngrok.example.com"
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
#替换证书
cp base.pem assets/client/tls/ngrokroot.crt
#编译
make release-server release-client
#编译成功后会在bin目录下找到ngrokd和ngrok这两个文件。其中ngrokd 就是服务端程序了。
#启动服务端
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="ngrok.faddei.com" -httpAddr=":80" -httpsAddr=":443"
cp bin/ngrokd ngrokd
#httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。由于微信限制不能出现端口号,因此这个使用了80、443端口。
#编译其他客户端交叉编译
GOOS=windows GOARCH=amd64 make release-client
GOOS=darwin GOARCH=amd64 make release-client
#设置本地客户端
1)在同级目录下新建一个配置文件ngrok.cfg
server_addr: "ngrok.example.com:4443"
trust_host_root_certs: false
2)同级目录下新建一个启动脚本startup.bat
@echo on
cd %cd%
#ngrok -proto=tcp 22
#ngrok start web
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=yjc 8080
#其中,-config指向配置文件,-log存放日志文件位置,-subdomain为自定义的域名前缀。8080为端口号。
我服务器上面是这样做的你可以参考下 supervisor 监控ngrokd进程
防火墙开启 4443
下面的-httpAddr=":8888" -httpsAddr=":8443 这两个一定要指定防止端口冲突
[program:ngrokd]
directory=/usr/local/ngrok
command=/usr/local/ngrok/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="ngrok.example.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 配置的反向代理80口的指定
http 的口对应上面的服务配置的8888 https的对应上面的8443
server {
listen 80;
server_name *.ngrok.example.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;
}