文档章节

搭建ngrok服务

returnSky
 returnSky
发布于 2017/07/22 21:55
字数 708
阅读 21
收藏 0

服务器环境: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;
    }
}

 

© 著作权归作者所有

共有 人打赏支持
returnSky
粉丝 0
博文 8
码字总数 3024
作品 0
珠海
CentOS7搭建ngrok服务器

CentOS7搭建ngrok服务器 会飞的污熊2017-12-302 阅读 web ngrok是一个反向代理,它能够让你本地的web服务或tcp服务通过公共的端口和外部建立一个安全的通道,使得外网可以访问本地的计算机服...

会飞的污熊
2017/12/30
0
0
ngrok平台搭建

ngrok 搭建 之前反向代理的功能一直使用其他人搭建的服务来进行微信的开发,但是最近一段时间特别的不稳定,正好手里还有一台空闲VPS和域名,所以就萌生自己搭建服务器的念头。 编译 ngrok ...

罗布V
2016/11/13
127
0
Ngrok搭建服务器

一、ngrok简介及作用 ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。 这些看上去很麻烦,我们更需要的是了解ngrok的用途。 完美代替“花生壳”软件。 “花生壳”是一款老牌的内网...

dingdayu
2016/08/23
2.2K
6
ngrok服务安装笔记

ngrok目前只开源1.x版本,最新的是1.7,使用下来发现比花生壳内网版要稳定和好用得多,重要的是ngrok支持mac和Linux平台,很是好用。先前参考JerryQu的博文搭建 ngrok 服务实现内网穿透进行部...

侠云
2015/10/22
0
0
关于搭建自己的内网穿透服务-ngrok

简述搭建ngrok的过程 1、环境准备 1)必须有一台公网服务器,阿里云服务器为例(最好是linux 系统 centOs7) 2)必须注册自己的域名(xxx.vip),阿里云上可以注册 并在阿里云服务器管理中,...

打酱油11号
07/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
41分钟前
1
0
OSChina 周四乱弹 —— 上帝对我单身年限的惩罚越来越长了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享张卫健的单曲《身体健康》 《身体健康》- 张卫健 手机党少年们想听歌,请使劲儿戳(这里) 昨天是重阳节咯, 可惜小小编辑总是晚...

小小编辑
43分钟前
7
0
django rest framework 外键序列化方法与问题总结

django rest framework 外键序列化方法与问题总结 当借口中需要出现一对多关系的时候,我们可以用rest_framwork的序列化功能来处理,代码如下. # models.pyfrom django.db import modelscl...

_Change_
昨天
1
0
SingleNumber136 leetCode

Given a non-empty array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you im......

woshixin
昨天
1
0
String ,  StringBuffer ,  StringBuilder的区别

String , StringBuffer , StringBuilder的区别 String 首先,String 是用来表示一个字符串常量的,它是一个不可变对象,意味着,一旦我们创建了某个字符串之后,就不能再改变它的值了,我们可...

tsmyk0715
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部