前言
提示:首先需要一个成功经过备案的域名
再者: 需要一台服务器,腾讯云亦或阿里云国内服务器皆可!
介绍
- ngrok是一个内网穿透的解决方案,它使得你本地的服务器可以被局域网外的公网访问到
- ngork有服务端和客户端,服务端运行在公网服务器,客户端运行在本地服务器
- ngrok服务端会建立 http 和 https 服务,默认端口 80/443,以及供 ngrok 客户端连接的服务,默认端口 4443
它的工作流程如下:
- 访问端输入域名 -> DNS -> ngrok 服务端 -> 请求映射到ngrok 客户端->客户端返回响应到 ngrok 服务端 ->ngrok 服务端返回响应到访问端
域名解析
- 登录自己的服务器控制台进行域名解析,个人是腾讯云的,下面就以腾讯云为案例简单做一期教程。
- 然后用登录到自己的服务器,可用浏览器自带的命令行,也可用xslhell
Go环境安装
- 因为 ngrok 是用 Golang 语言编写的,所以我们下面需要安装 go 环境
- 命令行安装
wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz --no-check-certificate
- 解压
tar zxvf go1.8.3.linux-amd64.tar.gz
- 配置系统环境命令
mv go /usr/local/
- 添加环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
- 使配置生效
source /etc/profile
- 查看版本
go version
安装Git
- 命令行安装 Git 所需要的依赖包等
yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++
- 如图
- 卸载系统自带的Git
yum remove git
- 如图
- 命令行下载 Git
wget https://www.kernel.org/pub/software/scm/git/git-2.6.0.tar.gz
- 如图
- 解压
tar zxvf git-2.6.0.tar.gz
- 解压完后进入Git目录下 使用 make 命令进行编译安装
make && make install
- 如图
- 耐心等待安装编译完成!
- 配置全局路径
export PATH="/usr/local/git/bin:$PATH"
source /etc/profile
- 如图
- 查看版本信息
git --version
获取Ngrok源码
- 使用 Git命令直接拉取
git clone https://github.com/inconshreveable/ngrok.git
- 如图
- 进入 ngrok 目录下配置环境
- 设置自己解析的域名
ngrok.cn2118.cn
你自己的域名
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.cn2118.cn" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=ngrok.cn2118.cn" -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
- 如图【中途提示不要惊慌,输入
y
继续替换即可】 - 生成服务端【温馨提示:过程比较慢请耐心等待!!!!!!】
make release-server
- 按理讲,应该就可以编译成功了,但是我发现,编译的时候很多依赖包是需要自动下载的,有一个包
- log4go 会提示访问不到,修改源码,将该包改为 github 上的地址:
- 找到 /usr/local/src/ngrok/src/ngrok/log/logger.go ,第5行import中的 log 包,改为:
log "github.com/keepeye/log4go"
-
编译成功后,应该可以在 /usr/local/src/ngrok/bin 下生成了一个 ngrokd 可执行文件,这就是我们的服务端了,现在启动服务端试试:
-
然后重新 make release-server
-
生成客户端
GOOS=windows GOARCH=amd64 make release-server release-client
- 如图
- 启动服务端【域名和端口可自定义】
nohup bin/ngrokd -domain="ngrok.cn2118.cn" -httpAddr=":8001" &
- 查看是否启动成功
lsof -i:8001
- 客户端启动
- 首先到
Ngrok\windows_amd64
目录下载到Windows客户端上 - 然后在新建一个配置文件
ngrok.cfg
- 内容
server_addr: "ngrok.cn2118.cn:4433"
trust_host_root_certs: false
- 如图
- 启动
ngrok -config=ngrok.cfg -subdomain www 80