为啥需要内网穿透
在日常开发中,我们不可避免的需要模拟线上的访问,比如:微信支付,微信支付回调等。都需要有线上的运行环境才能够进行测试。
但是这使得开发测试变得繁琐。
为了模拟线上环境进行测试,我们一般都会通过第三方,如花生壳等进行内网穿透来模拟线上环境操作。
为啥要自己搭一个内网穿透
使用花生壳等第三方软件需要相应的代价,如花生壳需要6块钱+实名认证。这些倒还好,就是如果需要指定域名进行穿透需要重新花钱,这点就很不爽了。
通过 LanProxy 自己搭建内网穿透
下面我们就来介绍下 Lanproxy,Lanproxy项目是使用 java 写的,所以很有亲切感。
首先通过 Lanproxy 进行内网穿透搭建,我们需要有一台云服务器或一台能够外网访问的服务器。
在服务器中我们需要准备运行环境:jdk 1.8(或者直接使用 docker )。
然后需要下载 lanproxy 服务端安装包 proxy-server-0.1.zip,并解压。
下载地址:https://seafile.io2c.com/d/2e81550ebdbd416c933f
我们先来看看项目结构:
[ proxy-server-0.1]# ll
total 20
drwxrwxrwx 2 root root 4096 bin # 启动命令 , 包括 linux shell 脚本以及 windows bat 执行文件。
drwxr-xr-x 2 root root 4096 conf # 配置文件,包括log4j日志配置,以及项目启动参数配置config.properties
drwxr-xr-x 2 root root 4096 lib # jar包 存放路径
drwxr-xr-x 2 root root 4096 logs # 日志打印文件目录
drwxr-xr-x 8 root root 4096 webpages # html 及 js 等文件
配置外网穿透,通过外网访问内部博客地址,使用ip进行访问(域名也是一样的原理)
步骤一:配置 conf/config.properteis 文件
server.bind=0.0.0.0
## 配置服务端与客户端进行交互的端口
server.port=8090
## 是否开启 ssl
server.ssl.enable=true
server.ssl.bind=0.0.0.0
## ssl 服务端与客户端进行交互的端口
server.ssl.port=4993
server.ssl.jksPath=test.jks
server.ssl.keyStorePassword=123456
server.ssl.keyManagerPassword=123456
server.ssl.needsClientAuth=false
config.server.bind=0.0.0.0
## 后台管理系统的访问端口
config.server.port=8080
## 后台管理系统的访问用户名
config.admin.username=qguofeng
## 后台管理系统的访问密码
config.admin.password=qguofneg
步骤二:服务端配置
启动服务
[ proxy-server-0.1]# sh ./bin/startup.sh
启动服务之后,有两种访问后台的方式
方式一:通过直接 IP + port 方式进行访问
方式二:在 nginx 中配置 域名映
访问 xx.xx.xx:8080 后台登录界面如下:

步骤三:服务端操作,进行客户端添加以及客户端映射添加
添加客户端

添加映射

ngxin 代理配置:让我们配置的公网地址+端口能够被代理到我们的lanproxy 后台服务中

步骤三:客户端配置
下载客户端安装包 proxy-client-0.1.zip 并解压,目录结构与服务端一致,这里就不介绍了。
修改配置:conf/config.properties
# 服务端添加客户端时的随机key
client.key=c8ac9c24c5dc4593be8bcf5098802987
# 是否开启 ssl 访问
ssl.enable=false
ssl.jksPath=test.jks
ssl.keyStorePassword=123456
# 服务端对应的地址:可以是ip 也可以是域名
server.host=xxx.xxx.xxx.xx
# 如果使用ssl,则对应的是服务端配置的 server.ssl.port
# 如果不使用ssl,则对应服务端配置的 server.port
server.port=8090
启动:如果是 linux 环境直接启动 bin/startup.sh 如果是 windows 直接双击启动 startup.bat
步骤四:验证
在启动客户端之后我们能够在服务端后台看到如下数据

当显示在线时便是客户端和服务端已经连接完成
访问外网地址:xxx.xxx.xx.xx:2181

总结
通过 lanproxy 我们能够实现,自定义域名的内网穿透。不同域名的统一端口的内网穿透,同一域名不同端口的内网穿透。可以很方便实现多个项目间的外网访问。

长按二维码关注,一起共同成长!





