文档更新说明
2018年04月06日 v1.0
内网穿透相信是后端开发者经常遇到的需求,可是怎么实现呢?其实有现成的服务:花生壳、ngrok等,但是,最近花生壳宣布,免费版的内网穿透将不支持80端口映射了,而免费版的ngrok也不够稳定,于是乎,我就开始需找新的解决方案了
本文使用了docker、nginx,要全部搞懂的话需要一定的后端基础(当然,基本上入个门就可以了),个人认为还是有一定阅读门槛的,但是你如果只是想把服务搭建起来,按照步骤来做是不难的
1、概述
内网穿透其实就是用服务器做一个中转,将请求转发,本文记录了在 ubuntu 16.04
上,基于 docker
搭建的内网穿透服务
1.1、原理
内网穿透的原理如下图所示:
- 用户访问我们的服务器,这个服务器是有公网IP的,所以用户可以无压力访问
- 服务器与本地电脑保持长链接,当有请求的时候,服务器将请求转发到我们的本地电脑
- 本地电脑将响应回复给服务器
- 服务器将响应回复给用户
1.2、实现
要搭建内网穿透,我们得完成两个任务
在公网能访问的服务器上运行我们的内网穿透服务; 在本地电脑上面运行内网穿透客户端。
当然,你可以自己根据原理实现一套,不过我们有现成的三方开源工具,可以帮我们实现这一套功能。这个就是我们今天的主角 lanproxy 。
2、实现步骤
现成的工具已经找到,接下来就是简单的搭建一下了,搭建过程分为服务端和本地电脑端
2.1、服务端流程:
- 在服务器上安装
docker
和nginx
- 在服务器上通过
docker
运行lanproxy server
- 将域名解析到我们的服务器
- 配置
nginx
反向代理 - 打开
lanproxy
后台页面,添加客户端和映射信息
2.2、本地电脑流程:
- 运行要被映射的服务
- 运行本地电脑映射客户端程序(
lanproxy client
)
下面开始服务端的配置:
2.1.1、在服务器上安装 docker
和 nginx
nginx
的安装是很简单的,一个命令就搞定
docker
也可以使用脚本安装,也是一句命令的事
# 1、安装nginx$ sudo apt-get install nginx# 2、安装docker$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun# 可选步骤,建docker源修改为阿里云$ sudo mkdir -p /etc/docker$ sudo tee /etc/docker/daemon.json <<-'EOF'{ # 下面的链接需要到阿里云后台查看,每个人的加速地址是不一样的 "registry-mirrors": ["https://abcdefg.mirror.aliyuncs.com"]}EOF$ sudo systemctl daemon-reload$ sudo systemctl restart docker
评论列表()