做微信开发或者把内网服务穿透出去,都会需要一个公网的地址

经常使用的内网穿透工具有:花生壳,ngrok,魔法隧道等,但是这些域名都是第三方随机的,自定义域名的都是收费。

本来在window是使用的n2n内网穿透服务的,但是换了Mac之后没有找到Mac端的客户端。

所以本文讲解一下怎么用lanproxy搭建一个内网穿透的服务


搭建环境

  • 一台公网的服务器(本文使用的是Ubuntu 16.04.3 LTS),运行lanproxy服务端
  • 服务器JDK的环境(本文使用的openjdk 1.8.0_151)
  • 客户端机器,运行lanproxy客户端,也需要java的环境需要安装jdkmaven

搭建过程

获取 lanproxy 的源码 并编译
  1. lanproxygithub地址去获取源码到本地
    git clone git@github.com:ffay/lanproxy.git
  2. 进入项目目录下 执行mvn package进行大包编译,打包编译的文件在distribution目录下,包括clientserver

图片描述

配置并启动
server端

proxy-server-0.1文件夹小的confserver端的配置文件

server.bind=0.0.0.0 # 服务地址 
server.port=4900 # 服务端口

# ssl 配置可以默认
server.ssl.enable=true
server.ssl.bind=0.0.0.0
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=8090 # 服务页面管理访问端口
config.admin.username=admin # 服务页面管理访问用户名
config.admin.password=admin # 服务页面管理访问用密码

配置完成之后可以上该文件加到传服务器上,执行下面的命令
scp -r proxy-server-0.1 user@premote_ip:remote_dolder

在服务端执行proxy-server-0.1/bin文件夹下的startuo.sh,服务端启动

在浏览器上访问上面的你的 服务器ip + prot就可以看到管理页面了
图片描述

输入上面你配置的用户名密码登录进去,进去配置
图片描述

首先添加一个客户端:
图片描述

添加成功后在客户端管理那可以看到刚刚添加的客户端:
图片描述

然后在对刚刚添加成功的客户端进行配置:
图片描述

代理名称随便输入,一般都用本地代理服务的名称方便产看

一个客户端代理可以配置多个本地服务端口
client端

proxy-client-0.1文件夹小的confclent端的配置文件

client.key=caaab8dc002c4e0f8b31ecb683d8900f # 这个key就是服务端中客户端管理的客户端秘钥
ssl.enable=false
ssl.jksPath=test.jks
ssl.keyStorePassword=123456

server.host= # 这个添加服务端地址,可以是配置的域名也可以是公网Ip

#default ssl port is 4993
server.port=4900 # 服务端端口

这个客户端 是java版本的所以需要jdk环境,配置完成后在window执行bin目录下的 startup.bat,在linux(mac)环境中运行bin目录下的 startup.sh

nginx 的配置

如果你微信开发只能80端口,但是你只有一个80端口,而且有很多其他的服务,这个就需要配置nginx进行端口转发

首先你要有一个域名,配置一条A记录指向的服务比如这个代理服务你可以配置:
*.proxy.yourdomain ---- > 你的公网ip地址

nginx上进行配置,主要是根据 server_name进行转发

假如你本地的微信服务是8080端口,上面客户端配置添加的公网端口是5000那你可以这样配置,把你本地微信的服务穿透出去为:
wechat.proxy.yourdomain(上面添加的域名A记录和这个有关系的,不然解析不到对应的服务器地址)那么nginx的配置为

{
    server {
        listen 80;
        server_name wechat.proxy.yourdomain;
        location / {
                proxy_pass  http://127.0.0.1:5000/;
        }
    }
}

配置完成后重启 nginx -s reload ,你就可以可以使用你配置代理域名服务访问你本地的服务了

以后如果再有本地的服务需要穿透出去的,可以按照相同的方法进行配置
如果在同一个机器上,就可以直接在服务配置页面下选择对应的客户端添加一个端口转发的配置就可以了
若不再一个机器上,就新建一个客户端在进行配置

图片描述

扫描关注,查看更多文章,提高编程能力


一步
1.7k 声望407 粉丝