Ngrok服务端搭建与linux\mac\window客户端的编译
创建时间:
阅读:
ngrok 服务编译的前提
1 2 3
| wget https://storage.googleapis.com/golang/go1.4.3.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.4.3.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin
|
ngrok 服务端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| cd /usr/local git clone https://github.com/inconshreveable/ngrok.git cd ngrok
openssl genrsa -out rootCA.key 2048; openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.allji.cn" -days 5000 -out rootCA.pem; openssl genrsa -out device.key 2048; openssl req -new -key device.key -subj "/CN=ngrok.allji.cn" -out device.csr; openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000;
//copy cp rootCA.pem ../ngrok/assets/client/tls/ngrokroot.crt; cp device.crt ../ngrok/assets/server/tls/snakeoil.crt; cp device.key ../ngrok/assets/server/tls/snakeoil.key;
make release-server
|
客户端 windows
1 2 3 4
| cd /usr/local/go/src/; GOOS=windows GOARCH=386 CGO_ENABLED=0 ./make.bash; cd /usr/local/ngrok; GOOS=windows GOARCH=386 make release-client;
|
客户端 linux
客户端 mac
1 2 3 4
| cd /usr/local/go/src/; GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 ./make.bash; cd /usr/local/ngrok; GOOS=darwin GOARCH=amd64 make release-client;
|
客户端 树莓派
1 2 3 4
| cd /usr/local/go/src/; GOOS=linux GOARCH=arm CGO_ENABLED=0 ./make.bash; cd /usr/local/ngrok; GOOS=linux GOARCH=arm make release-client;
|
运行
1 2 3 4 5 6 7 8 9 10
| ./bin/ngrokd -domain=“ngrok.dou2b.com" -httpAddr=":80" -httpsAddr=":443"
//客户端 ./ngrok -subdomain "rplees" -config ngrok.cfg 8080
ngrok.cfg配置: server_addr: "ngrok.dou2b.com:4443" trust_host_root_certs: false
//是绑定一个rplees.yy.xx.com到本地的8080端口,具体参数相见 ngrok -help
|
问题
- 用 go1.5 运行会有一些问题,改用1.4的
- 如果服务端本身就已经有80、443的端口被占用了,而ngrok映射的地址又不想其他的端口,这时候可以用docker解决(原理就是docker容器的80、433端口映射到服务器上的580、5443端口,在用nginx反向代理解决)
docker部分
我的是centos环境安装。其他的请参考官网
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| FROM ubuntu:14.04
MAINTAINER rplees rplees.i.ly@gmail.com
ENV NGROK /usr/local/ngrok ENV DOMAIN ngrok.dou2b.com
EXPOSE 80 443 4443
COPY bin/ngrokd $NGROK/ COPY run-ser.sh $NGROK/
RUN chmod +x $NGROK/run-ser.sh
CMD $NGROK/run-ser.sh
|
保存到Dockerfile
run-ser.sh
1 2
| #!/bin/bash /usr/local/ngrok/ngrokd -domain ngrok.dou2b.com
|
保存到当前的Dockerfile路径的run-ser.sh
将 /user/local/ngrok/bin/ngrokd 拷贝到当前的Dockerfile路径的 bin/ngrokd
运行docker build -t rplees/ngrokd .
等等执行完成.
执行 docker images
查看下现在的容器.
启动 docker run -d -p 580:80 -p 5443:443 -p 4443:4443 rplees/ngrokd:latest
docker ps -a
查看容器的状态
查看日志 docker logs <tag>
nginx 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| map $scheme $proxy_port { "http" "580"; "https" "5443"; default "580"; } server { listen 80; listen 443; server_name ngrok.dou2b.com *.ngrok.dou2b.com; location / { proxy_pass $scheme://127.0.0.1:$proxy_port; } ssl on; ssl_certificate /usr/local/ngrok/assets/server/tls/snakeoil.crt; ssl_certificate_key /usr/local/ngrok/assets/server/tls/snakeoil.key;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off; log_not_found off; }
|
###docker操作命令
1 2 3 4 5 6
| service docker stop service docker start
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop docker images|grep none|awk '{print $3 }'|xargs docker rmi docker run -d -p 580:80 -p 5443:443 -p 4443:4443 rplees/ngrokd:latest
|
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 rplees.i.ly@gmail.com
文章标题:Ngrok服务端搭建与linux\mac\window客户端的编译
本文作者:rplees 浙ICP备19033301号-2
发布时间:2016-03-22, 20:20:58
最后更新:2021-12-22, 16:21:47
原始链接:http://rplees.com/2016/03/22/ngrok服务端搭建与linux-mac-window客户端的编译/
版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。