这里是文章模块栏目内容页
在windows系统上假设ngrok 代理服务器调试安装成功步骤

ngrok简介

ngrok是一个反向代理,通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道。ngrok可捕获和分析所有通道上的流量,便于后期分析与响应。ngrok是用GO语言编码的,下载源码后可以直接编译出各种平台的服务器端和客户端。

编译ngrok

ngrok的服务端和客户端都是纯绿色软件,只需要用源码编译生成执行文件就行了。我的服务器系统为centos,下面的命令为centos命令。

ngrok的源代码托管在github上,可以先在ubuntu下安装git再将ngrok的源代码克隆到本地。

git clone https://github.com/inconshreveable/ngrok.git ngrok #将ngrok源代码克隆回本地 yum install golang #安装go语言

现在编译环境就装好了,再生成证书,就可以编译了。

生成证书

export NGROK_DOMAIN="ngrok.yourdomain.com" #设置环境变量,ngrok域名 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 server.key 2048 openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000

拷贝证书到指定位置

cp rootCA.pem assets/client/tls/ngrokroot.crt #复制rootCA.pem到assets/client/tls/并更名为ngrokroot.crt cp server.crt assets/server/tls/snakeoil.crt #复制server.crt到assets/server/tls/并更名为snakeoil.crt cp server.key assets/server/tls/snakeoil.key #复制server.key到assets/server/tls/并更名为snakeoil.key

编译

由于go语言的特性,在编译时直接生成机器码,所以在运行过程中并不需要go的环境(挺牛X呀)。在ngrok目录下,运行一下命令分别生成对应的客户端与服务端。

GOOS如下可填windows和linux,GOARCH可填368、amd64、arm,对应各种运行环境。

#win服务端 GOOS=windows GOARCH=386 make release-server #win客户端 GOOS=windows GOARCH=386 make release-client #linux服务端 GOOS=linux GOARCH=386 make release-server #linux客户端 GOOS=linux GOARCH=386 make release-client

编译生成的文件默认在bin文件夹中。

部署ngrok服务器

首先要将你的域名解析到你的服务器上,因为客户端不指定子域名话ngrok服务器会随机分配一个子域名,所以如果是多用户的话需要将*.ngrok.yourdomain.com解析到服务器。当然ngrok.yourdomain.com也得解析。

将生成的ngrokd文件和刚生成的证书文件复制到任意目录就可以运行了

./ngrokd -tlsKey="snakeoil.key" -tlsCrt="snakeoil.crt" -domain="ngrok.yourdomain.com" -httpAddr=":801" -httpsAddr=":802"

部署ngrok客户端

将生成的对应平台的ngrok客户端文件复制到主机内,新建一个配置文件ngrok.cfg如下:

server_addr: "ngrok.yourdomain.com:4443" trust\_host\_root_certs: false

然后执行命令

ngrok.exe -subdomain kyt -config=ngrok.cfg 8080

-subdomain指定子域名,-config指向刚建的配置文件,后面8080为本地的端口号

linux下可以新建默认配置文件~/.ngrok如下 server_addr: ngrok.yourdomain.com:4443 trust\_host\_root_certs: false tunnels: nas: subdomain: "sub1" proto: http: 80 shell: remote_port: 2221 proto: tcp: 22 webshell: subdomain: "sub2" proto: https: 4200

然后使用命令全部映射

ngrok start-all

启动客户端并测试

打开浏览器,输入您映射后的域名http://kyt.ngrok.yourdomain.com:801就可以穿透内网访问您的web服务器了。

总结

具体原理一知半解,使用起来很简单方便,生成了ARM的客户端在我的树莓派上也可以用,非常NICE

本文为服务自己精简记录,原文地址如下:https://blog.csdn.net/zhangguo5/article/details/77848658?utm_source=5ibc.net&utm_medium=referral