在Cente Os 7 下搭建ngrok服务端并生成客户端

一、准备

        需要一台云服务器(本文ECS),一个域名(二级域名也可以),并且域名正确解析到云服务器。

二、安装环境

        安装gcc和git(下载ngrok源码)

    yum install gcc git -y

三、安装go语言环境

         去官网https://golang.org/dl/下载最新安装包 
        网很慢的下载地址:
https://pan.baidu.com/s/1c2i2oaG(官网1.9.2版本) 
        解压缩

    tar -c /usr/local/ -zxvf go1.9.2.linux-amd64.tar.gz

    添加到环境变量

    #go lang
 export  GOROOT= /usr/local/go
 export  PATH=$PATH:$GOROOT /bin

    查看是否安装成功(查看版本号)

    go version
    go version go1.9.2 linux /amd64   (表示安装成功)

    

四、搭建Ngrok服务

        下载ngrok源码

    cd  /usr/local/ngrok 
    git clone https: //github .com /tutumcloud/ngrok .git ngrok

生成证书(一行一行执行)
cd  ngrok 
NGROK_DOMAIN= "你的域名"

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

将新生成的证书,替换掉assets/client/tls下的证书

cp base.pem assets/client/tls/ngrokroot.crt -y


 编译生成ngrokd和ngrok

1
make  release-server release-client

        正常执行后,ngrok/bin 目录下应该有 ngrok、ngrokd 两个可执行文件。

       启动服务端:

1
sudo  . /bin/ngrokd  -tlsKey=server.key -tlsCrt=server.crt -domain= "你的域名"  -httpAddr= ":80"  -httpsAddr= ":443"

httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定),如果你配置了 iptables 规则,需要放行这三个端口上的 TCP 协议。 
现在,通过 https://你的域名:443和 https://你的域名:80就可以访问到 ngrok 提供的转发服务


出现下面提示则说明成功

1
2
3
4
5
[22:07:18 CST 2017 /12/07 ] [INFO] (ngrok /log .(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[22:07:18 CST 2017 /12/07 ] [INFO] (ngrok /log .Info:112) Listening  for  public http connections on [::]:443[22:07:18 CST 2017 /12/07 ] [INFO] (ngrok /log .Info:112) Listening  for  public https connections on [::]:7008[22:07:18 CST 2017 /12/07 ] [INFO] (ngrok /log .Info:112) Listening  for  control and proxy connections on [::]:4443[22:07:18 CST 2017 /12/07 ] [INFO] (ngrok /log .(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds
[22:07:18 CST 2017 /12/07 ] [INFO] (ngrok /log .Info:112) Listening  for  public https connections on [::]:80[22:07:18 CST 2017 /12/07 ] [INFO] (ngrok /log .Info:112) Listening  for  control and proxy connections on [::]:4443
[22:07:18 CST 2017 /12/07 ] [INFO] (ngrok /log .Info:112) Listening  for  control and proxy connections on [::]:4443
[22:07:18 CST 2017 /12/07 ] [INFO] (ngrok /log .(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds

五、编译生成ngrok(windows客户端)

1
GOOS=windows GOARCH=amd64  make  release-client

成功会在bin目录下看到windows_amd64文件夹,复制到windows电脑上即可启动

六、编译生成ngrok(Mac客户端)

    去ngrok目录编译:

1
2
cd  /usr/local/src/ngrok
GOOS=darwin GOARCH=amd64  make  release-client

        完成后会在 /usr/local/src/ngrok/bin/darwin_amd64/ 下发现 ngrok 文件,将其拷贝到Mac上面,像上面windows的设置即可使用

七、客户端运行 

    创建一个文件,命名为ngrok.cfg,写入一下内容

1
2
server_addr:  "你的域名:4443"
trust_host_root_certs:  false

    在创建一个启动bat文件,命名为start.bat(Windows版本,Mac同理创建一个sh文件内容一致在最前面加一个"./"为当前目录执行,不带引号)

1
2
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain 映射本地的域名 本地的端口
(如:ngrok -config=ngrok.cfg -subdomain sb 8081)

    启动start.bat文件

1
2
3
外网域名访问
http: // 映射本地的域名:80
映射到本地的地址是127.0.0.1:本地的端口

                                                            **需要注意的是"你的域名" 要进行泛解析到服务器ip上才可以,自定义二级域名用**



猜你喜欢

转载自blog.csdn.net/qq_35809876/article/details/80484789