This commit is contained in:
刘河 2019-03-26 23:46:34 +08:00
parent 42a73fa392
commit d42710497c
3 changed files with 55 additions and 49 deletions

View File

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

View File

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

View File

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