搭建ngrok服务
搭建ngrok服务
returnSky 发表于5个月前
搭建ngrok服务
  • 发表于 5个月前
  • 阅读 9
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: ngrok能够建立让内网tunnel,让外网直接访问。

服务器环境:Centos6 x86 (32位)

准备工作

一台VPS,一个域名,另外需要准备 golang 环境和 git,因为ngrokd和ngrok的编译是用 golang 。

Centos下使用epel源安装GO语言环境:

$ yum install golang

检查GO语言是否安装成功

$ go version

输出:go version go1.7.6 linux/386 表示成功

搭建流程

1.下载 ngrok 源码

$ cd /usr/local/
$ git clone https://github.com/inconshreveable/ngrok.git
$ export GOPATH=~/ngrok
$ cd ngrok/

2.生成签名证书

在自生成证书时需要一个解析到服务器上的主域名,现在以”test.com”为例。

$ export NGROK_DOMAIN="test.com"
$ 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 device.key 2048
$ openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
$ openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

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

$ cp rootCA.pem assets/client/tls/ngrokroot.crt
$ cp device.crt assets/server/tls/snakeoil.crt
$ cp device.key assets/server/tls/snakeoil.key

3.编译生成ngrokd(服务端)

在 ngrok 目录下执行以下命令:

$ make release-server

编译成功后,生成的 ngrokd 保存到 ngrok/bin/ 路径下。

4.编译生成ngrok(客户端)

由于我打算在window环境下使用,所以编译生成的系统OS需要指定为 windows。

$ GOOS=windows GOARCH=amd64 make release-client

编译成功后,会在 ngrok/bin/ 路径下多一个 windows_amd64 的文件夹。将该文件夹拉取到本机windows下即可执行。

5.启动ngrokd

$ ./ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":8091" -httpsAddr=":8092" -tunnelAddr=":8083"

#出现下面信息则表示启动成功
[09:40:30 EDT 2017/07/22] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[09:40:30 EDT 2017/07/22] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:8091
[09:40:30 EDT 2017/07/22] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:8092
[09:40:30 EDT 2017/07/22] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:8083
[09:40:30 EDT 2017/07/22] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds

6.启动ngrok

在 windows_amd64 文件夹创建 nrgok.cfg 文件,内容如下:

server_addr: "test.com:8083"   #test.com替换为自己的域名
trust_host_root_certs: false
tunnels:
    http:
        subdomain: "wx"         #子域名
        proto:
            http: "8010"        #监听本地的端口

    https:
        subdomain: "wxs"
        proto:
            https: "8011"

创建好配置文件之后,在CMD切换到 windows_amd64 目录下,执行以下命令:

ngrok.exe -config ngrok.cfg start http 

若看到以下信息则表示成功启动客户端:

Tunnel Status                 online
Version                       1.7/1.7
Forwarding                    http://wx.test.com:8091 -> 127.0.0.1:8010
Forwarding                    https://wxs.test.com:8092 -> 127.0.0.1:8011
Web Interface                 127.0.0.1:4040
# Conn                        0
Avg Conn Time                 0.00ms

-------------------------------------------------------------------------------------------------------------

若要监听 80 端口,同时避免和其他应用冲突,可以使用nginx进行代理配置。

修改 nginx.conf 文件,在 http 模块下添加以下内容,然后重启nginx服务即可直接访问。

upstream ngrok_http {
    server 127.0.0.1:8091;
    keepalive 64;
}

server {
    listen 80;
    server_name *.自己的域名;
    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:8091;
        proxy_set_header X-Nginx-Proxy true;
        proxy_set_header Connection "";
        proxy_pass http://ngrok_http;
    }
}

 

标签: ngrok CentOS
共有 人打赏支持
粉丝 0
博文 8
码字总数 3024
×
returnSky
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: