Docker+Ngrok+Nginx实现内网穿透

  公网访问本地Web项目势在必行,今天偶然又看到了内网穿透,发现可以通过Docker部署,有docker就很容易在服务器上部署了。

准备工作

  • 公网ip的服务器一台
  • 域名一个
  • ngrok docker镜像

创建并启动docker ngrok容器

1
2
3
4
5
6
7
8
9
docker run -idt \
--restart always \
--name ngrok-server \
-p 8880:80 \
-p 8443:443 \
-p 4443:4443 \
-v /data/ngrok:/myfiles \
-e DOMAIN='tunnel.findingu.cn' \
hteen/ngrok /bin/sh /server.sh
  • 服务器的80端口用作了nginx反向代理服务器的端口,所以暴露8880
  • 443端口也比较常用,所以也不占用了,另外暴露8443端口
  • 4443端口用作 ngrok服务器和客户端直接的通信
  • 挂载 /data/ngrok bin文件夹中有各系统的客户端程序
  • DOMAIN=’tunnel.findingu.cn’ 配置二级域名

添加域名解析

tunnel.findingu.cn, *.tunnel.findingu.cn
在域名管理-解析 添加这两条A记录

添加反向代理配置

如果创建容器时直接绑定80、443端口,可以不用这一步操作

添加 ngrok-proxy.conf

查看nginx反向代理服务器如何搭建

vi ~/nginx/conf.d/ngrok-proxy.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
listen 80;
server_name tunnel.findingu.cn *.tunnel.findingu.cn;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://193.112.101.53:8880; #代理的ip+端口
}
}
server {
listen 443;
server_name tunnel.findingu.cn *.tunnel.findingu.cn;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://193.112.101.53:8443; #代理的ip+端口
}
}

客户端使用

将/data/ngrok/bin下载到本地
这里可以使用ftp或者iterm2 的 shell integration 下载

osx 用的是 bin/darwin_amd64/ngrok

添加可执行权限

1
chmod +x ngrok

准备配置文件

1
vi fu.cfg
1
2
server_addr: "tunnel.findingu.cn:4443"
trust_host_root_certs: false

运行客户端

1
./ngrok -config=fu.cfg -subdomain=test 127.0.0.1:8080
  • subdomain : 不写 则随机分配
  • 127.0.0.1 : ip地址不写 则默认为127.0.0.1
  • 8080 : 本地想要内网穿透的端口号

运行成功显示

1
2
3
4
5
6
7
8
9
ngrok                                                           (Ctrl+C to quit)

Tunnel Status online
Version 1.7/1.7
Forwarding https://test.tunnel.findingu.cn -> 127.0.0.1:8901
Forwarding http://test.tunnel.findingu.cn -> 127.0.0.1:8901
Web Interface 127.0.0.1:4040
# Conn 11
Avg Conn Time 33.53ms



本文作者: Hbson
本文地址http://hbson.cn/2018/08/12/Docker_Ngrok_tunnel/
转载、参考请注明出处,如有错误,请指正。如果觉得文章对你有帮助,也请通过留言来支持一下