刘河 6 years ago
parent
commit
d42710497c
3 changed files with 55 additions and 49 deletions
  1. 51 45
      README.md
  2. 3 3
      conf/npc.conf
  3. 1 1
      lib/config/config.go

+ 51 - 45
README.md

@@ -43,7 +43,6 @@ nps是一款轻量级、高性能、功能强大的**内网穿透**代理服务
        * [服务端配置文件重载](#服务端配置文件重载)
        * [服务端停止或重启](#服务端停止或重启)
     * [配置文件说明](#服务端配置文件)
-
     * [使用https](#使用https)
     * [与nginx配合](#与nginx配合)
     * [关闭http|https代理](#关闭代理)
@@ -53,6 +52,7 @@ nps是一款轻量级、高性能、功能强大的**内网穿透**代理服务
     * [关闭公钥访问](#关闭公钥访问)
     * [关闭web管理](#关闭web管理)
     * [服务端多用户登陆](#服务端多用户登陆)
+    * [监听指定ip](#监听指定ip)
 * [客户端](#客户端)
     * [客户端启动](#客户端启动)
         * [无配置文件模式](#无配置文件模式)
@@ -405,6 +405,12 @@ web上可以自定义客户端连接的密钥,但是必须具有唯一性
 ### 服务端多用户登陆
 如果将`nps.conf`中的`allow_user_login`设置为true,服务端web将支持多用户登陆,登陆用户名为user,密码为每个客户端的验证密钥,默认该功能是关闭的。
 
+### 监听指定ip
+
+nps支持每个隧道监听不同的服务端端口,可在web中控制,或者npc配置文件中(可忽略,默认为0.0.0.0)
+```ini
+server_ip=xxx
+```
 
 ## 客户端
 
@@ -424,8 +430,8 @@ web上可以自定义客户端连接的密钥,但是必须具有唯一性
 ##### 全局配置
 ```ini
 [common]
-server=1.1.1.1:8284
-tp=tcp
+server_addr=1.1.1.1:8284
+conn_type=tcp
 vkey=123
 username=111
 password=222
@@ -438,11 +444,11 @@ max_conn=10
 ```
 项 | 含义
 ---|---
-server | 服务端ip:port
-tp | 与服务端通信模式(tcp或kcp)
+server_addr | 服务端ip:port
+conn_type | 与服务端通信模式(tcp或kcp)
 vkey|服务端配置文件中的密钥(非web)
 username|socks5或http(s)密码保护用户名(可忽略)
-username|socks5或http(s)密码保护密码(可忽略)
+password|socks5或http(s)密码保护密码(可忽略)
 compress|是否压缩传输(true或false或忽略)
 crypt|是否加密传输(true或false或忽略)
 rate_limit|速度限制,可忽略
@@ -453,11 +459,11 @@ max_conn|最大连接数,可忽略
 
 ```ini
 [common]
-server=1.1.1.1:8284
+server_addr=1.1.1.1:8284
 vkey=123
 [web1]
 host=a.proxy.com
-target=127.0.0.1:8080,127.0.0.1:8082
+target_addr=127.0.0.1:8080,127.0.0.1:8082
 host_change=www.proxy.com
 header_set_proxy=nps
 ```
@@ -465,7 +471,7 @@ header_set_proxy=nps
 ---|---
 web1 | 备注
 host | 域名(http|https都可解析)
-target|内网目标,负载均衡时多个目标,逗号隔开
+target_addr|内网目标,负载均衡时多个目标,逗号隔开
 host_change|请求host修改
 header_xxx|请求header修改或添加,header_proxy表示添加header proxy:nps
 
@@ -473,96 +479,96 @@ header_xxx|请求header修改或添加,header_proxy表示添加header proxy:np
 
 ```ini
 [common]
-server=1.1.1.1:8284
+server_addr=1.1.1.1:8284
 vkey=123
 [tcp]
 mode=tcp
-target=127.0.0.1:8080
-port=9001
+target_addr=127.0.0.1:8080
+server_port=9001
 ```
 项 | 含义
 ---|---
 mode | tcp
-port | 在服务端的代理端口
-target|内网目标
+server_port | 在服务端的代理端口
+tartget_addr|内网目标
 
 ##### udp隧道模式
 
 ```ini
 [common]
-server=1.1.1.1:8284
+server_addr=1.1.1.1:8284
 vkey=123
 [udp]
 mode=udp
-target=127.0.0.1:8080
-port=9002
+target_addr=127.0.0.1:8080
+server_port=9002
 ```
 项 | 含义
 ---|---
 mode | udp
-port | 在服务端的代理端口
-target|内网目标
+server_port | 在服务端的代理端口
+target_addr|内网目标
 ##### http代理模式
 
 ```ini
 [common]
-server=1.1.1.1:8284
+server_addr=1.1.1.1:8284
 vkey=123
 [http]
 mode=httpProxy
-port=9003
+server_port=9003
 ```
 项 | 含义
 ---|---
 mode | httpProxy
-port | 在服务端的代理端口
+server_port | 在服务端的代理端口
 ##### socks5代理模式
 
 ```ini
 [common]
-server=1.1.1.1:8284
+server_addr=1.1.1.1:8284
 vkey=123
 [socks5]
 mode=socks5
-port=9004
+server_port=9004
 ```
 项 | 含义
 ---|---
 mode | socks5
-port | 在服务端的代理端口
+server_port | 在服务端的代理端口
 ##### 私密代理模式
 
 ```ini
 [common]
-server=1.1.1.1:8284
+server_addr=1.1.1.1:8284
 vkey=123
 [secret_ssh]
 mode=secret
 password=ssh2
-target=10.1.50.2:22
+target_addr=10.1.50.2:22
 ```
 项 | 含义
 ---|---
 mode | secret
 password | 唯一密钥
-target|内网目标
+target_addr|内网目标
 
 ##### p2p代理模式
 
 ```ini
 [common]
-server=1.1.1.1:8284
+server_addr=1.1.1.1:8284
 vkey=123
 [p2p_ssh]
 mode=p2p
 password=ssh2
-target=10.1.50.2:22
+target_addr=10.1.50.2:22
 ```
 项 | 含义
 ---|---
 mode | p2p
 password | 唯一密钥
-target|内网目标
+target_addr|内网目标
 
 
 ##### 文件访问模式
@@ -570,11 +576,11 @@ target|内网目标
 
 ```ini
 [common]
-server=1.1.1.1:8284
+server_addr=1.1.1.1:8284
 vkey=123
 [file]
 mode=file
-port=9100
+server_port=9100
 local_path=/tmp/
 strip_pre=/web/
 ````
@@ -582,7 +588,7 @@ strip_pre=/web/
 项 | 含义
 ---|---
 mode | file
-port | 服务端开启的端口
+server_port | 服务端开启的端口
 local_path|本地文件目录
 strip_pre|前缀
 
@@ -698,8 +704,8 @@ allow_ports=9001-9009,10001,11000-12000
 ```ini
 [tcp]
 mode=tcp
-port=9001-9009,10001,11000-12000
-target=8001-8009,10002,13000-14000
+server_port=9001-9009,10001,11000-12000
+target_port=8001-8009,10002,13000-14000
 ```
 
 逗号分隔,可单个或者范围,注意上下端口的对应关系,无法一一对应将不能成功
@@ -707,11 +713,11 @@ target=8001-8009,10002,13000-14000
 ```ini
 [tcp]
 mode=tcp
-port=9001-9009,10001,11000-12000
-target=8001-8009,10002,13000-14000
-targetAddr=10.1.50.2
+server_port=9001-9009,10001,11000-12000
+target_port=8001-8009,10002,13000-14000
+target_ip=10.1.50.2
 ```
-填写targetAddr后则表示映射的该地址机器的端口,忽略则便是映射本地127.0.0.1,仅范围映射时有效
+填写target_ip后则表示映射的该地址机器的端口,忽略则便是映射本地127.0.0.1,仅范围映射时有效
 ### 守护进程
 本代理支持守护进程,使用示例如下,服务端客户端所有模式通用,支持linux,darwin,windows。
 ```
@@ -736,11 +742,11 @@ KCP 是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价
 ```ini
 [web1]
 host=a.proxy.com
-target=127.0.0.1:7001
+target_addr=127.0.0.1:7001
 location=/test
 [web2]
 host=a.proxy.com
-target=127.0.0.1:7002
+target_addr=127.0.0.1:7002
 location=/static
 ```
 对于`a.proxy.com/test`将转发到`web1`,对于`a.proxy.com/static`将转发到`web2`
@@ -792,13 +798,13 @@ export NPC_SERVER_VKEY=xxxxx
 **在配置文件启动模式下:**
 ```ini
 [common]
-server={{.NPC_SERVER_ADDR}}
-tp=tcp
+server_addr={{.NPC_SERVER_ADDR}}
+conn_type=tcp
 vkey={{.NPC_SERVER_VKEY}}
 auto_reconnection=true
 [web]
 host={{.NPC_WEB_HOST}}
-target={{.NPC_WEB_TARGET}}
+target_addr={{.NPC_WEB_TARGET}}
 ```
 在配置文件中填入相应的环境变量名称,npc将自动进行渲染配置文件替换环境变量
 

+ 3 - 3
conf/npc.conf

@@ -1,7 +1,7 @@
 [common]
 server_addr=127.0.0.1:8024
 conn_type=tcp
-vkey=nps
+vkey=123
 auto_reconnection=true
 
 [health_check_test1]
@@ -20,11 +20,11 @@ health_check_type=tcp
 health_check_target=127.0.0.1:8083,127.0.0.1:8082
 [web]
 host=b.o.com
-target_addr=127.0.0.1:8080
+target_addr=127.0.0.1:8080,127.0.0.1:8082
 
 [tcp]
 mode=tcp
-target=127.0.0.1:8080
+target_addr=127.0.0.1:8080
 server_port=10000
 
 [socks5]

+ 1 - 1
lib/config/config.go

@@ -161,7 +161,7 @@ func dealHost(s string) *file.Host {
 			h.Target = strings.Replace(item[1], ",", "\n", -1)
 		case "host_change":
 			h.HostChange = item[1]
-		case "schemego":
+		case "scheme":
 			h.Scheme = item[1]
 		case "location":
 			h.Location = item[1]