描述

有时候会需要把内网映射到公网,让外网能访问到。比如微信公众号的开发等。可使用的工具有花生壳、cpolarNgrok等。
本文案例使用的是LanProxy。该工具是开源免费的,但是需要有公网服务器,通过把 LanProxy 服务端部署在云服务器中,客户端在需要内网映射的电脑中启动即可。

下载与安装

下载服务端、客户端工具

配置服务端

  1. 在云服务器中上传 服务端 安装包,解压之后即可得到 proxy-server-0.1

  2. 配置 conf/config.properties,并./bin/startup.sh 启动服务端

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    server.bind=0.0.0.0 
    # 客户端连接端口为:4900
    server.port=4900

    server.ssl.enable=false
    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
    # 前端配置地址为:8090
    config.server.port=8090
    # 登录服务端的用户名、密码
    config.admin.username=root
    config.admin.password=123456

    注意:阿里云服务器需要在服务器安全组中把 4900,12001-12005 端口开放

    1
    2
    3
    4
    5
    6
    7
    // 如果开启了防火墙, 则需要把 4900 端口开放
    // 查看开放的端口
    firewall-cmd --list-ports
    // 开放端口
    firewall-cmd --zone=public --add-port=4900/tcp --permanent
    // 使配置生效
    firewall-cmd --reload

  3. 配置 Nginx

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    upstream proxy-server {
    server localhost:8090;
    }
    server {
    listen 80;
    server_name test-proxy.muycode.com;
    # 后端服务
    location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://proxy-server;
    }
    }

    server {
    listen 80;
    server_name test-proxy-1.muycode.com;
    # 后端服务
    location / {
    proxy_pass http://localhost:12001;
    proxy_set_header x-forwarded-for $remote_addr;
    }
    }
    server {
    listen 80;
    server_name test-proxy-2.muycode.com;
    # 后端服务
    location / {
    proxy_pass http://localhost:12002;
    proxy_set_header x-forwarded-for $remote_addr;
    }
    }
  4. 访问服务端,进行端口配置
    http://test-proxy.muycode.com/lanproxy-config/

以上服务端已配置完成。

配置客户端

配置 conf/config.properties,并bin/startup.bat 启动客户端

1
2
3
4
5
6
7
8
9
10
# 对应服务端配置的密钥
client.key=e0fcc6aa8a0346e089420f7a1ef1aded
ssl.enable=false
ssl.jksPath=test.jks
ssl.keyStorePassword=123456

server.host=test-proxy.muycode.com

#default ssl port is 4993
server.port=4900

启动客户端之后,在服务端中的 客户端列表 看到状态为在线表示配置正确。

测试内网映射

  1. 在本地启动一个端口为 8777 的服务(这里用的是 Nginx),访问http://localhost:8777/,可以正常访问

  2. 通过公网访问test-proxy-1.muycode.com,如果与上面页面一样,则说明内网已经被映射到公网中,到此配置完成。