自己搭建一个内网穿透服务

硬件准备

  • 云服务器一台
  • 已备案的域名
  • 本地电脑(我这里是win10系统)

云服务器环境准备

本地电脑环境准备

  • maven
  • git
  • java

最终实现目标

实现访问 http://云服务器ip:9000 相当于访问 http://127.0.0.1:8001

docker安装lanproxy

  • 先在/root下创建一个文件夹lanproxy

自己搭建一个内网穿透服务

  • 创建两个文件

自己搭建一个内网穿透服务
第一个文件夹

mkdir config-data

第二个启动lanproxy的docker脚本
自己搭建一个内网穿透服务

docker run -d \
           --name lanproxy-server \
           -p 8090:8090 \
           -p 4900:4900 \
           -p 4993:4993 \
           -p 9000-9100:9000-9100 \
           --restart=always \
           -e LANPROXY_USERNAME="admin" \
           -e LANPROXY_PASSWORD="admin" \
           -v ${LANPROXY_DIR}/config-data:/root/.lanproxy            franklin5/lanproxy-server
  • 启动lanproxy
sh start.sh

自己搭建一个内网穿透服务
第一次启动如果没有下载docker镜像会下载一会
我这里已经下载了所有没有演示

  • docker 查看运行结果
docker ps

自己搭建一个内网穿透服务

  • 本地访问lanproxy控制台
 http://云服务器ip:8090

自己搭建一个内网穿透服务
当然这里前提是需要在云服务器控制台设置防火墙把8090端口打开
我这里是腾讯云服务器,阿里云差不多
自己搭建一个内网穿透服务
输入用户名和密码
就是start.sh脚本里设置的(admin,admin)
自己搭建一个内网穿透服务
到这里lanproxy就已经安装完成了

配置nginx

  • 实现lanproxy.域名访问到lanproxy控制台
    自己搭建一个内网穿透服务

  server {
  	  listen       80;
  	  server_name       lanproxy.域名;
  
  	  proxy_set_header X-Forwarded-Host $host;
  	  proxy_set_header X-Forwarded-Server $host;
  	  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  
  	  location / {
  		  proxy_pass http://云服务器ip:8090;
  		  proxy_connect_timeout 600;
  		  proxy_read_timeout 600;
  	  }
  }

添加域名解析
自己搭建一个内网穿透服务

修改后重启nginx
自己搭建一个内网穿透服务
远程访问试试
自己搭建一个内网穿透服务
访问成功

到这里nginx就配置完了

lanproxy控制台配置

自己搭建一个内网穿透服务
名称随便取,填完提交即可
自己搭建一个内网穿透服务
自己搭建一个内网穿透服务
自己搭建一个内网穿透服务

这里相当于使访问云服务器的9000端口便相当于访问本地的8001端口

lanproxy客户端配置

先去下载客户端
码云下载地址

自己搭建一个内网穿透服务
下载到本地
进入到文件夹中
自己搭建一个内网穿透服务
输入cmd 打开黑窗口
自己搭建一个内网穿透服务
打包

mvn package

自己搭建一个内网穿透服务
生成一个文件 进去
自己搭建一个内网穿透服务
自己搭建一个内网穿透服务
自己搭建一个内网穿透服务

进入config文件夹
修改配置
自己搭建一个内网穿透服务
client.key就是下面的密钥
自己搭建一个内网穿透服务
修改完后退出到bin目录
进去双击启动
自己搭建一个内网穿透服务
自己搭建一个内网穿透服务
自己搭建一个内网穿透服务

访问测试

先在本地看看8001端口是否正常运行
自己搭建一个内网穿透服务
测试没问题
替换成云服务ip:9000再测试
这里记得先把云服务器的防火墙9000端口打开
自己搭建一个内网穿透服务
自己搭建一个内网穿透服务
也没问题
但是用IP:端口方式访问不太好
不计较的可以忽略下面内容
修改nginx进行代理
使访问win.域名相当于访问云服务器的9000端口
自己搭建一个内网穿透服务

  server {
  	  listen       80;
  	  server_name       win.域名;
  
  	  proxy_set_header X-Forwarded-Host $host;
  	  proxy_set_header X-Forwarded-Server $host;
  	  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  
  	  location / {
  		  proxy_pass http://云服务器ip:9000;
  		  proxy_connect_timeout 600;
  		  proxy_read_timeout 600;
  	  }
  }

重启nginx
自己搭建一个内网穿透服务

添加域名解析 打开防火墙9000端口
自己搭建一个内网穿透服务
再次访问
自己搭建一个内网穿透服务

多端口代理

上面使用9000端口穿透了本地的8001端口
如果要穿透本地的其他端口
那就再添加几条配置呗
多大的事!
自己搭建一个内网穿透服务
自己搭建一个内网穿透服务

自己搭建一个内网穿透服务
记得打开防火墙端口
自己搭建一个内网穿透服务
自己搭建一个内网穿透服务
就这?

上一篇:Python基于WSGI实现一个简单的WEB网页


下一篇:SpringCloud Gateway的路由demo(nacos作为服务注册中心)