From d42710497cf41e8a0c823201e50d4047f81614eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B2=B3?= Date: Tue, 26 Mar 2019 23:46:34 +0800 Subject: [PATCH] Readme --- README.md | 96 +++++++++++++++++++++++--------------------- conf/npc.conf | 6 +-- lib/config/config.go | 2 +- 3 files changed, 55 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 050b32f..3f905ef 100644 --- a/README.md +++ b/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将自动进行渲染配置文件替换环境变量 diff --git a/conf/npc.conf b/conf/npc.conf index 1862402..0c01281 100644 --- a/conf/npc.conf +++ b/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] diff --git a/lib/config/config.go b/lib/config/config.go index 15b1227..920752e 100644 --- a/lib/config/config.go +++ b/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]