阿里云搭建配置自己的ngrok服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云搭建配置自己的ngrok服务相关的知识,希望对你有一定的参考价值。
一直在使用sunny提供的免费的ngrok服务,由于昨天不知是不是服务器down的原因,一直连接不上,导致手中微信开发的工作无法很好的开展。遂有了再次尝试自己搭建一个ngrok服务(曾经有过几个小时的研究和尝试,没有成功)。在N小时的尝试之后,最终修成正果,成功搭建属于自己的ngrok服务!
(其实还有一些问题没有确认,但是暂时不深入研究了,有兴趣的可以深入)
准备工作:
一台外网服务器,一个域名。
我的环境:
阿里云Centos6.5,二级域名ngrok.***.cn泛解析。
Go环境
1 #请根据自己的服务器环境,下载适合的包,64位的:go1.4.2.linux-amd64.tar.gz 2 wget https://storage.googleapis.com/golang/go1.4.2.linux-386.tar.gz 3 tar -C /usr/local -xzf go1.4.2.linux-386.tar.gz 4 #环境变量 5 mkdir $HOME/go 6 echo ‘export GOROOT=/usr/local/go‘>> ~/.bashrc 7 echo ‘export GOPATH=$HOME/go‘>> ~/.bashrc 8 echo ‘export PATH=$PATH:$GOROOT/bin‘>> ~/.bashrc 9 source $HOME/.bashrc 10 11 (不得不说,由于强迫症,该开始一直用的最新的1.6版本的,后来换成了1.4,不知道刚开始的不成功有没有这方面的原因,听说1.6已经不是C的了,具体没有深入去研究,有兴趣可以深入,有结论可以告知在下)
ngrok1.7源码
1 #获取ngrok1.7到本地(网上资料说要替换一个log4j的地址,我发现现在导下来的源码已经是引用github的资源了) 2 git clone https://github.com/tutumcloud/ngrok.git ngrok
生成ngrok的域名证书
1 cd ngrok
//ngrok.***.cn请自行替换成自己的域名(泛解析) 2 //刚开始是用的全局变量$NGROK_DOMAIN,后来换成了值,(刚开始失败应该不是这里的原因,自我感觉..哈哈) 3 openssl genrsa -out rootCA.key 2048 4 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.***.cn" -days 5000 -out rootCA.pem 5 openssl genrsa -out device.key 2048 6 openssl req -new -key device.key -subj "/CN=ngrok.***.cn" -out device.csr 7 openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000 8 cp rootCA.pem assets/client/tls/ngrokroot.crt 9 cp device.crt assets/server/tls/snakeoil.crt 10 cp device.key assets/server/tls/snakeoil.key
编译生成linux服务器端:
1 //go环境 2 cd /usr/local/go/src/ 3 GOOS=linux GOARCH=amd64 CGO_ENABLED=0 ./make.bash //1.6版本的时候这里报错了,so可以自行研究 4 //编译ngrok服务端与客户端 5 cd /root/ngrok 6 GOOS=linux GOARCH=amd64 make release-server release-client
编译生成windows客户端(32位即可):
//go环境 cd /usr/local/go/src/ GOOS=windows GOARCH=386 CGO_ENABLED=0 ./make.bash //编译windows客户端 cd /root/ngrok //64位的时候,没有成功(现在也没有试过64了,当时没成功可能是其他原因,反正32位成功了) GOOS=windows GOARCH=386 make release-client
启动服务器:
#正常启动默认通信端口4443 ./bin/ngrokd -domain="ngrok.***.cn" #指定监听通信端口/http/https端口 ./bin/ngrokd -domain="srk.win" -httpsAddr=":445" -httpAddr=":81" -httpsAddr=":4443" #nohup后台运行(也可以使用screen运行) nohup /root/ahost/bin/ngrokd -domain="ahost.win" -httpAddr=":81" 2>&1 &
因为本人服务器的80端口亦用作了nginx服务,微信开发的话必须80端口,so可以用nginx代理:
(相关域名端口配置请自行配置)
#ngrok.ekan001.com.conf upstream ngrok{ server 127.0.0.1:81; keepalive 64; } server { listen 80; server_name *.ngrok.***.com; access_log /home/wwwlogs/ngrok.wechat.log; 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:81; proxy_set_header X-Nginx-Proxy true; proxy_set_header Connection ""; proxy_pass http://ngrok; } }
最后还是要感谢下面的blog,虽然都大同小异。
妈妈再也不用担心我没有ngrok用啦 …~~~
参考:
https://blog.ni-co.moe/p/340.html(感谢博主,给予了一定的指导)
http://www.sunnyos.com/article-show-48.html(Sunny)
http://www.ekan001.com/articles/38
以上是关于阿里云搭建配置自己的ngrok服务的主要内容,如果未能解决你的问题,请参考以下文章
Windows下使用远程桌面连接阿里云ubuntu 16.04服务器