准备工作
- 公网服务器一台并且安装docker,我用的阿里云Centos7.0
- 域名一枚,本文使用
tunnel.hteen.cn
做Ngrok服务器域名 - hteen/ngrok Docker镜像
拉取镜像
1 | [root@iZ25f738hs2Z ngrok]# docker pull hteen/ngrok |
启动一个容器生成ngrok客户端,服务器端和CA证书
1 | [root@iZ25f738hs2Z ngrok]# docker run --rm -it -e DOMAIN="tunnel.hteen.cn" \ |
挂载宿主机目录/data/ngrok
到容器内/myfiles
目录 ,之后会
1 | Generating RSA private key, 2048 bit long modulus |
当看到build ok !
的时候就成功了
1 | [root@iZ25f738hs2Z ngrok]# ls -Al |
生成了我们要的客户端和服务端在/data/ngrok/bin
目录下,包括
1 | bin/ngrokd 服务端 |
启动Ngrok server
直接挂载刚刚的/data/ngrok
到容器即可启动服务
1 | [root@iZ25f738hs2Z ngrok]# docker run -idt --name ngrok-server \ |
这样我们就启动了一个ngrok服务端程序
域名解析
这里我们需要添加两条A记录到阿里云服务器
这样我们才能将 tunnel.hteen.cn
和 *.tunnel.hteen.cn
DNS解析到我们的服务器
客户端连接
下载我们生成的客户端,我这里以osx为例,其他平台一样
首先创建一个ngrok.cfg
配置文件
1 | server_addr: "tunnel.hteen.cn:4443" |
然后在命令行执行
1 | ./ngrok -config ./ngrok.cfg -subdomain wechat 192.168.99.100:80 |
我这里是将wechat.tunnel.hteen.cn
绑定的本地192.168.99.100:80
如果不指定-subdomain
参数,每次启动客户端的时候会随机分配一个域名,随意并不方便
成功连接效果
Nginx + Docker + Ngrok
由于ngrok默认使用80和443端口,我服务器已经运行了Nginx服务 ,
所以我这里启动Ngrok Server的时候并不是绑定的80和443端口,而是绑定的8082
和4432
1 | [root@iZ25f738hs2Z ngrok]# docker run -idt --name ngrok-server \ |
启动之后需要在nginx.conf
添加两条反向代理配置
1 | server { |
10.24.198.241
是我阿里云内网IP
结语
如果你暂时不准备搭建自己的ngrok服务器,也可以使用我目前的服务器
客户端在这里下载
^_^ Have a nice day