写于:2019-03-25 20:52:37

# 为啥需要内网穿透

在日常开发中,我们不可避免的需要模拟线上的访问,比如:微信支付,微信支付回调等。都需要有线上的运行环境才能够进行测试。 但是这使得开发测试变得繁琐。 为了模拟线上环境进行测试,我们一般都会通过第三方,如花生壳等进行内网穿透来模拟线上环境操作。

# 为啥要自己搭一个内网穿透

使用花生壳等第三方软件需要相应的代价,如花生壳需要6块钱+实名认证。这些倒还好,就是如果需要指定域名进行穿透需要重新花钱,这点就很不爽了。

# 通过 LanProxy 自己搭建内网穿透

下面我们就来介绍下 Lanproxy,Lanproxy项目是使用 java 写的,所以很有亲切感。 首先通过 Lanproxy 进行内网穿透搭建,我们需要有一台云服务器或一台能够外网访问的服务器。 在服务器中我们需要准备运行环境:jdk 1.8(或者直接使用 docker )。 然后需要下载 lanproxy 服务端安装包 proxy-server-0.1.zip,并解压。 下载地址

我们先来看看项目结构:

[ 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 中配置 域名映射地址

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

添加客户端

添加客户端

添加映射

添加映射

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

nginx配置

步骤三:客户端配置

下载客户端安装包 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 我们能够实现,自定义域名的内网穿透。不同域名的统一端口的内网穿透,同一域名不同端口的内网穿透。

精彩内容推送,请关注公众号!
最近更新时间: 3/25/2020, 10:53:32 PM