一分钟教你学会搭建ngrok内网穿透

前言

最近因为项目开发的须要,要和第三方对接一些接口。最开始是想直接部署在公网进行对接,后面发现重复部署以及不利于调试太浪费时间,对接过程当中甚至会堵塞在某个地方许久。最后仍是决定经过代理映射到内网,方便调试和对接。node


搭建前提

1.须要一台公网服务器。这个能够租一台云服务器来解决。 2.须要一个域名。本人租个.cn的域名一年也只要个30块钱左右。linux


环境依赖

yum install build-essential golang mercurial git
git clone https://github.com/tutumcloud/ngrok.git ngrok
//安装nginx你也能够选择本身编译
yum install -y nginx 
//设置环境变量,这里的hcyhj.cn是你的域名,须要本身修改
export NGROK_DOMAIN="hcyhj.cn"
复制代码

配置ngrok

//进入到你clone下来的ngrok目录中
cd ngrok
//执行下面的命令(能够一个字都不用更改,大概就弄证书和秘钥吧。。。)
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.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 base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
//将生成的文件copy过去
cp base.pem assets/client/tls/ngrokroot.crt
复制代码

编译客户端和服务端

//编译linux服务端 linux客户端
make release-server release-client
//编译windows客户端
GOOS=windows GOARCH=amd64 make release-client
复制代码

这里编译好的文件会存放在ngrok/bin目录中。如图: nginx

ngrok.png


配置域名解析

这个根据不一样的域名商的引导去配置便可。 git


nginx配置文件的配置

//在nginx配置文件nginx.conf中添加以下配置
server {
        listen 80;
        server_name *.hcyhj.cn  hcyhj.cn ;
        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:8081;
                        proxy_set_header X-Nginx-Proxy true;
                        proxy_set_header Connection "";
                        proxy_pass      http://127.0.0.1:8081;
        }
    }
复制代码

配置完启动nginx。github


启动ngrok

//注意:这里的httpAddr对应的端口须要和nginx配置中proxy_pass 和proxy_set_header端口一致    
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="hcyhj.cn" -httpAddr=":8081" -httpsAddr=":8082"
复制代码

windows客户端

从上图(ngrok.png)位置拉取nginx.exe放到windows上,在同目录下新建配置文件,随便弄个名字便可。例如ngrok.conf。golang

//在配置文件中加入代码,这里域名hcyhj.cn须要和上述环境变量配置的域名一致,端口为4443,服务端ngrokd启动有个默认通信端口4443对外开放
server_addr: hcyhj.cn:4443
//不使用ssl证书
trust_host_root_certs: false
复制代码

新建bat文件,加入代码windows

//注意:subdomain是你要使用的域名和端口
cd %cd%
ngrok -config=ngrok.conf -subdomain=www 8087 
复制代码

配置完成执行bat脚本启动ngrok客户端。而后在浏览器输入 www.hcyhj.cn (这里的hcyhj.cn是你本身的域名)便会跳转到你本地8087端口的应用上。这里能够启用多个,只须要改配置文件的subdomain,例如改为subdomain=aa 8081,便访问 aa.hcyhj.cn 映射到本地的8081端口的应用上。依次类推。浏览器


小知识点

部署好后,发现linux上的ngrok服务器不能在后台运行。后面通过google找到一个解决办法,启动时加入参数 -log 便可,例如:bash

nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="hcyhj.cn" -httpAddr=":8081" -httpsAddr=":8082" -log=stout &
复制代码

End

相关文章
相关标签/搜索