本教程前提:
有域名需要解析到服务器
有公网ip的服务器
我们这里用3级域名解析到服务器,自定义域名则为4级域名。
ngrok.daliycode.com A记录到 213.123.123.123(你的服务器ip) *.ngrok.daliycode.com CNAME 到ngrok.daliycode.com
域名解析完毕。
apt-get install git
#下载go cd /usr/local/src wget http://www.golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz #解压 tar -zxvf go1.9.2.linux-amd64.tar.gz #移动到/usr/local/目录 mv go /usr/local/ #go的命令需要做软连接到/usr/bin ln -s /usr/local/go/bin/* /usr/bin/ #检查是否安装正确 go vesion
1、下载ngrok,设置域名,ngrok地址
cd /usr/local/ git clone https://github.com/inconshreveable/ngrok.git export GOPATH=/usr/local/ngrok/ export NGROK_DOMAIN="ngrok.daliycode.com"
2、为域名生成证书
cd /usr/local/ngrok openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.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 rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
3、在软件源代码目录下面会生成证书文件,把这些文件拷贝到指定位置
cd /usr/local/ngrok cp rootCA.pem assets/client/tls/ngrokroot.crt cp server.crt assets/server/tls/snakeoil.crt cp server.key assets/server/tls/snakeoil.key
4、如果是在国内的服务器需要改下面文件,香港或者国外的服务器不需要,跳过这一步
vim /usr/local/ngrok/src/ngrok/log/logger.go log "github.com/keepeye/log4go"
5、编译服务器端
cd /usr/local/ngrok/ GOOS=linux GOARCH=amd64 make release-server
6、编译客户端
#mac os 64位操作系统 cd /usr/local/ngrok/ GOOS=darwin GOARCH=amd64 make release-client #linux 64位 GOOS=linux GOARCH=amd64 make release-client #windows 32位系统 cd /usr/local/ngrok/ GOOS=windows GOARCH=386 make release-client #windows 64位系统 cd /usr/local/ngrok/ GOOS=windows GOARCH=amd64 make release-client
编译出来的客户端在/usr/local/ngrok/bin目录
ngrokd 是linux的服务器端应用
ngrok 是linux的客户端应用
ngrok.exe 是windows客户端应用 在对应的文件夹下
7、服务端启动
这里使用8888端口,80端口已经给nginx使用了,因此后面还要用nginx将80端口转发到8888端口实现不用在地址栏输入端口号。
/usr/local/ngrok/bin/ngrokd -domain ngrok.daliycode.com -httpAddr :8888 -httpsAddr :8043
8、客户端使用
这里演示的是 linux客户端的使用。将服务上生成的linux客户端ngrok下载到本地linux服务器。 我这里放到了/usr/local/ngrok/目录,创建客户端配置文件,与ngrok同目录.
vim ngrok.yml #内容如下 server_addr: ngrok.daliycode.com:4443 tunnels: blog: proto: http: 8001 #这个是本地linux服务器的web访问端口
启动客户端
/usr/local/ngrok/ngrok -config=/usr/local/ngrok/ngrok.yml -log=/usr/local/ngrok/ngrok.log start blog
可将上面这个启动命令写到sh文件里面,每次只需要执行sh文件即可。
到这里就可以使用 blog.ngrok.daliycode.com:8888 访问本地linux服务器上的web服务了。
比如你本地再搭建个video站,先用nginx添加虚拟站 端口为8002。
创建配置文件ngrok2.yml
server_addr: ngrok.daliycode.com:4443 tunnels: video: proto: http: 8002 #这个是本地linux服务器的web访问端口
启动客户端:
/usr/local/ngrok/ngrok -config=/usr/local/ngrok/ngrok2.yml -log=/usr/local/ngrok/ngrok2.log start video
那么访问地址就为:vedio.ngrok.daliycode.com:8888 这样就实现了自定义域名。
9、 线上服务器 *.ngrok.daliycode.com 80端口转发到8888端口
带有端口的站点是无法用来调试微信开发的。那么我们用线上服务器的nginx 将来自*.ngrok.daliycode.com 80端口的请求转发到8888端口,这样仅仅只转发*.ngrok.daliycode.com 80端口的请求,实现与线上服务器已有的站点共享80端口。
nginx 添加配置
server { listen 80; server_name *.ngrok.daliycode.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; }
最终我们用 blog.ngrok.daliycode.com 即可访问本地linux服务器上的 8001的站点了。
上述是真实案例,blog.ngrok.daliycode.com可以访问时,表示我开启客户端了。
参考:
https://blog.csdn.net/dszgf5717/article/details/79119254