码迷,mamicode.com
首页 > 其他好文 > 详细

阿里云搭建配置自己的ngrok服务

时间:2016-05-25 12:56:07      阅读:871      评论:0      收藏:0      [点我收藏+]

标签:

  一直在使用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服务

标签:

原文地址:http://www.cnblogs.com/aliang1992/p/5526306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!