ngrok+nginx+supervisor 配置

# 编译参考

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#安装
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.example.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 这两个一定要指定防止端口冲突

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[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 配置参考

http 的口对应上面的服务配置的8888 https的对应上面的8443

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
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;
}
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计