Linux 搭建 ngrok 反向代理

原创
2016/09/07 16:07
阅读数 8.4K

1. 为什么要使用ngrok?

ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。

作为一个Web开发者,我们有时候会需要临时地将一个本地的Web网站部署到外网,以供他人体验评价或协助调试等等,通常我们会这么做:
找到一台运行于外网的Web服务器
服务器上有网站所需要的环境,否则自行搭建
将网站部署到服务器上
调试结束后,再将网站从服务器上删除
只不过是想向朋友展示一下网站而已,要不要这么麻烦,累感不爱╰(`□′)╯

2.服务端编译

mkdir /root/goproj
cd /root/goproj

#下载go语言编译器
wget http://golangtc.com/static/go/1.7/go1.7.linux-amd64.tar.gz
tar xvf go1.7.linux-amd64.tar.gz

#设置环境变量
vi /etc/profile
export GOROOT=/root/goproj/go
export PATH=$GOROOT/bin:$PATH
export GOPATH=/root/goproj/ngrok
source /etc/profile

cd /root/goproj
git clone https://github.com/inconshreveable/ngrok.git
cd /root/goproj/ngrok

#创建证书
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=t.test.com" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=t.test.com" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
cp rootCA.pem assets/client/tls/ngrokroot.crt cp device.crt assets/server/tls/snakeoil.crt cp device.key assets/server/tls/snakeoil.key

wget https://github.com/inconshreveable/go-update/archive/v0.zip
wget https://github.com/go-yaml/yaml/archive/v1.zip
#将下载的文件解压后的go文件放到
mkdir /root/goproj/ngrok/src/gopkg.in/inconshreveable/go-update.v0
mkdir /root/goproj/ngrok/src/gopkg.in/yaml.v1

cd /root/goproj/ngrok
make release-server

#服务端启动
/root/goproj/ngrok/bin/ngrokd -domain="t.test.com" -httpAddr=":8080" -httpsAddr=":8081" -tunnelAddr=":4443" &

3.客户端编译

3.1.Windows客户端

cd /root/goproj/go/src
GOOS=windows GOARCH=amd64 ./make.bash
cd /root/goproj/ngrok
GOOS=windows GOARCH=amd64 make release-client
#同理,这里的amd64是64位系统,32位改成386
#会在 bin/windows_amd64 目录下生成ngrok客户端程序,将ngrok.exe下载到windows操作系统

3.2.Mac客户端

cd /root/goproj/go/src
GOOS=darwin GOARCH=amd64 ./make.bash
cd /root/goproj/ngrok
GOOS=darwin GOARCH=amd64 make release-client
#会在 bin/darwin_amd64/ 目录下生成ngrok客户端程序

#新建 ngrok.cfg 文件,内容:
server_addr: "t.test.com:4443"
trust_host_root_certs: true

#客户端启动
./ngrok -config=ngrok.cfg -subdomain=a 8080

展开阅读全文
打赏
5
112 收藏
分享
加载中

引用来自“清风_”的评论

引用来自“焜爷帅呆了”的评论

引用来自“焜爷帅呆了”的评论

Tunnel Status online
Version 1.7/1.7
Forwarding http://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Forwarding https://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms

大神,客户端已经连接成功了,为啥还是访问不了http://dev.kunye.goobull.com:8080这个网址

引用来自“清风_”的评论

本地服务8080端口启动了吗?
本地访问这个端口是可以输出“hello”的

服务器防火墙8080开了吗?
问题解决了伙计,原来是公网IP没有做泛解析,导致客户端连上了也访问不了,谢谢了!😄
2016/11/02 10:32
回复
举报

引用来自“清风_”的评论

引用来自“焜爷帅呆了”的评论

引用来自“焜爷帅呆了”的评论

Tunnel Status online
Version 1.7/1.7
Forwarding http://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Forwarding https://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms

大神,客户端已经连接成功了,为啥还是访问不了http://dev.kunye.goobull.com:8080这个网址

引用来自“清风_”的评论

本地服务8080端口启动了吗?
本地访问这个端口是可以输出“hello”的

服务器防火墙8080开了吗?
我已经把服务器的防火墙关了
2016/11/01 14:03
回复
举报
清风_博主

引用来自“焜爷帅呆了”的评论

引用来自“焜爷帅呆了”的评论

Tunnel Status online
Version 1.7/1.7
Forwarding http://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Forwarding https://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms

大神,客户端已经连接成功了,为啥还是访问不了http://dev.kunye.goobull.com:8080这个网址

引用来自“清风_”的评论

本地服务8080端口启动了吗?
本地访问这个端口是可以输出“hello”的

服务器防火墙8080开了吗?
2016/11/01 13:26
回复
举报

引用来自“焜爷帅呆了”的评论

Tunnel Status online
Version 1.7/1.7
Forwarding http://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Forwarding https://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms

大神,客户端已经连接成功了,为啥还是访问不了http://dev.kunye.goobull.com:8080这个网址

引用来自“清风_”的评论

本地服务8080端口启动了吗?
本地访问这个端口是可以输出“hello”的
2016/11/01 10:23
回复
举报

引用来自“焜爷帅呆了”的评论

Tunnel Status online
Version 1.7/1.7
Forwarding http://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Forwarding https://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms

大神,客户端已经连接成功了,为啥还是访问不了http://dev.kunye.goobull.com:8080这个网址

引用来自“清风_”的评论

本地服务8080端口启动了吗?
启动了
2016/11/01 10:22
回复
举报
清风_博主

引用来自“焜爷帅呆了”的评论

Tunnel Status online
Version 1.7/1.7
Forwarding http://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Forwarding https://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms

大神,客户端已经连接成功了,为啥还是访问不了http://dev.kunye.goobull.com:8080这个网址
本地服务8080端口启动了吗?
2016/10/29 12:21
回复
举报
Tunnel Status online
Version 1.7/1.7
Forwarding http://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Forwarding https://dev.kunye.goobull.com:8080 -> 127.0.0.1:8080
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms

大神,客户端已经连接成功了,为啥还是访问不了http://dev.kunye.goobull.com:8080这个网址
2016/10/28 14:13
回复
举报

引用来自“啦啦啦拉拉”的评论

编译真麻烦

2016/09/14 15:27
回复
举报

引用来自“啦啦啦拉拉”的评论

编译真麻烦

这个系统有点意思,但是自己确实是真的搞懂不懂啊,不知道各位大神们是从那个方面着手并凯斯研发的
2016/09/14 15:26
回复
举报
清风_博主

引用来自“LMcallme”的评论

我也在弄,不过go可以用更简单的方式安装 \n rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm \n yum install golang 另外如果系统比较老还需编译新版git
ngrok在编译的时候也是会使用到git的,git必须安装。
2016/09/13 10:54
回复
举报
更多评论
打赏
35 评论
112 收藏
5
分享
返回顶部
顶部