nps是一款轻量级、高性能、功用强大的内网穿透代理效劳器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功用强大的web管理端。
背景
-
做微信公众号开发、小程序开发等----> 域名代理形式
-
想在外网经过ssh衔接内网的机器,做云效劳器到内网效劳器端口的映射,----> tcp代理形式
-
在非内网环境下运用内网dns,或者需求经过udp访问内网机器等----> udp代理形式
-
在外网运用HTTP代理访问内网站点----> http代理形式
-
搭建一个内网穿透ss,在外网好像运用内网vpn一样访问内网资源或者设备----> socks5代理形式
装置
releases装置
下载对应的系统版本即可,效劳端和客户端是单独的
源码装置
- 装置源码
go get -u github.com/cnlh/nps...
- 编译
go build cmd/nps/nps.go
go build cmd/npc/npc.go
运用示例
统一准备工作(必做)
-
开启效劳端,假定公网效劳器ip为1.1.1.1,配置文件中
bridge_port
为8284,配置文件中web_port
为8080 - 访问1.1.1.1:8080
- 在客户端管理中创立一个客户端,记载下考证密钥
- 内网客户端运转(windows运用cmd运转加.exe)
./npc -server=1.1.1.1:8284 -vkey=客户端的密钥
域名解析
适用范围: 小程序开发、微信公众号开发、产品演示
假定场景:
- 有一个域名proxy.com,有一台公网机器ip为1.1.1.1
- 两个内网开发站点127.0.0.1:81,127.0.0.1:82
- 想经过(http|https://)a.proxy.com访问127.0.0.1:81,经过(http|https://)b.proxy.com访问127.0.0.1:82
运用步骤
- 将*.proxy.com解析到公网效劳器1.1.1.1
-
点击方才创立的客户端的域名管理,添加两条规则规则:1、域名:
a.proxy.com
,内网目的:127.0.0.1:81
,2、域名:b.proxy.com
,内网目的:127.0.0.1:82
如今访问(http|https://)a.proxy.com
,b.proxy.com
即可胜利
https: 如需运用https请停止相关配置,详见 运用https
tcp隧道
适用范围: ssh、远程桌面等tcp衔接场景
假定场景: 想经过访问公网效劳器1.1.1.1的8001端口,衔接内网机器10.1.50.101的22端口,完成ssh衔接
运用步骤
- 在方才创立的客户端隧道管理中添加一条tcp隧道,填写监听的端口(8001)、内网目的ip和目的端口(10.1.50.101:22),保管。
-
访问公网效劳器ip(1.1.1.1),填写的监听端口(8001),相当于访问内网ip(10.1.50.101):目的端口(22),例如:
ssh -p 8001 root@1.1.1.1
udp隧道
适用范围: 内网dns解析等udp衔接场景
假定场景: 内网有一台dns(10.1.50.102:53),在非内网环境下想运用该dns,公网效劳器为1.1.1.1
运用步骤
- 在方才创立的客户端的隧道管理中添加一条udp隧道,填写监听的端口(53)、内网目的ip和目的端口(10.1.50.102:53),保管。
- 修正需求运用的内网dns为127.0.0.1,则相当于运用10.1.50.202作为dns效劳器
socks5代理
适用范围: 在外网环境下好像运用vpn一样访问内网设备或者资源
假定场景: 想将公网效劳器1.1.1.1的8003端口作为socks5代理,到达访问内网恣意设备或者资源的效果
运用步骤
- 在方才创立的客户端隧道管理中添加一条socks5代理,填写监听的端口(8003),保管。
- 在外网环境的本机配置socks5代理(例如运用proxifier停止全局代理),ip为公网效劳器ip(1.1.1.1),端口为填写的监听端口(8003),即可畅享内网了
http正向代理
适用范围: 在外网环境下运用http正向代理访问内网站点
假定场景: 想将公网效劳器1.1.1.1的8004端口作为http代理,访问内网网站
运用步骤
- 在方才创立的客户端隧道管理中添加一条http代理,填写监听的端口(8004),保管。
- 在外网环境的本机配置http代理,ip为公网效劳器ip(1.1.1.1),端口为填写的监听端口(8004),即可访问了
私密代理
适用范围: 无需占用多余的端口、平安性请求较高能够避免其别人衔接的tcp效劳,例如ssh。
假定场景: 无需新增加的端口完成访问内网效劳器10.1.50.2的22端口
运用步骤
- 在方才创立的客户端中添加一条私密代理,并设置独一密钥secrettest和内网目的10.1.50.2:22
- 在需求衔接ssh的机器上以执行命令
./npc -server=1.1.1.1:8284 -vkey=vkey -type=tcp -password=secrettest -local_type=secret
如需指定本地端口可加参数-local_port=xx
,默许为2000
留意: password为web管理上添加的独一密钥,详细命令可查看web管理上的命令提示
假定10.1.50.2用户名为root,如今执行ssh -p 2000 root@1.1.1.1
即可访问ssh
p2p效劳
适用范围: 大流量传输场景,流量不经过公网效劳器,但是由于p2p穿透和nat类型关系较大,不保证100%胜利,支持大局部nat类型。nat类型检测
假定场景: 内网1机器ip为10.1.50.2 内网2机器2 ip为10.2.50.2
想经过访问内网1机器1的2000端口---->访问到内网2机器3 10.2.50.3的22端口
运用步骤
-
在
nps.conf
中设置p2p_ip
(nps效劳器ip)和p2p_port
(nps效劳器udp端口) - 在方才方才创立的客户端中添加一条p2p代理,并设置独一密钥p2pssh
- 在机器1执行命令
./npc -server=1.1.1.1:8284 -vkey=123 -password=p2pssh -target=10.2.50.3:22
如需指定本地端口可加参数-local_port=xx
,默许为2000
留意: password为web管理上添加的独一密钥,详细命令可查看web管理上的命令提示
假定机器3用户名为root,如今在机器1上执行ssh -p 2000 root@127.0.0.1
即可访问机器2的ssh
web管理
引见
可在网页上配置和管理各个tcp、udp隧道、内网站点代理,http、https解析等,功用强大,操作便当。
提示:运用web形式时,效劳端执行文件必需在项目根目录,否则无法正确加载配置文件
启动
效劳端测试
./nps test
如有错误请及时修正配置文件,无错误可继续停止下去
效劳端启动
./nps start
假如无需daemon运转或者翻开后无法正常访问web管理,去掉start查看日志运转即可
web管理
进入web界面,公网ip:web界面端口(默许8080),密码默许为123
进入web管理界面,有细致的阐明
效劳端配置文件重载
假如是daemon启动
./nps reload
阐明: 仅支持局部配置重载,例如allow_user_login
auth_crypt_key
auth_key
web_username
web_password
等,将来将支持更多
效劳端中止或重启
假如是daemon启动
./nps stop|restart
效劳端配置文件
- /conf/nps.conf
称号 | 含义 |
---|---|
web_port | web管理端口 |
web_password | web界面管理密码 |
web_username | web界面管理账号 |
bridge_port | 效劳端客户端通讯端口 |
https_proxy_port | 域名代理https代理监听端口 |
http_proxy_port | 域名代理http代理监听端口 |
auth_key | web api密钥 |
bridge_type | 客户端与效劳端衔接方式kcp或tcp |
public_vkey | 客户端以配置文件形式启动时的密钥,设置为空表示关闭客户端配置文件衔接形式 |
ip_limit | 能否限制ip访问,true或false或疏忽 |
flow_store_interval | 效劳端流量数据耐久化距离,单位分钟,疏忽表示不耐久化 |
log_level | 日志输出级别 |
auth_crypt_key | 获取效劳端authKey时的aes加密密钥,16位 |
p2p_ip | 效劳端Ip,运用p2p形式必填 |
p2p_port | p2p形式开启的udp端口 |
运用https
方式一: 相似于nginx完成https的处置
在配置文件中将https_proxy_port设置为443或者其他你想配置的端口,和在web中对应域名编辑中设置对应的证书途径,将https_just_proxy
设置为false,然后就和http代理一样了
此外: 能够在nps.conf
中设置一个默许的https配置,当遇到未在web中设置https证书的域名解析时,将自动运用默许证书,另还有一种状况就是关于某些恳求的clienthello不携带sni扩展信息,nps也将自动运用默许证书
方式二: 在内网对应效劳器上设置https
在nps.conf
中将https_just_proxy
设置为true,并且翻开https_proxy_port
端口,然后nps将直接转发https恳求到内网效劳器上,由内网效劳器停止https处置
与nginx配合
有时分我们还需求在云效劳器上运转nginx来保证静态文件缓存等,本代理可和nginx配合运用,在配置文件中将httpProxyPort设置为非80端口,并在nginx中配置代理,例如httpProxyPort为8024时
server {
listen 80;
server_name *.proxy.com;
location / {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8024;
}
}
如需运用https也可在nginx监听443端口并配置ssl,并将本代理的httpsProxyPort设置为空关闭https即可,例如httpProxyPort为8024时
server {
listen 443;
server_name *.proxy.com;
ssl on;
ssl_certificate certificate.crt;
ssl_certificate_key private.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8024;
}
}
关闭代理
如需关闭http代理可在配置文件中将http_proxy_port设置为空,如需关闭https代理可在配置文件中将https_proxy_port设置为空。
将nps装置到系统
假如需求长期并且便当的运转nps效劳端,可将nps装置到操作系统中,可执行命令
(./nps|nps.exe) install
装置胜利后,关于linux,darwin,将会把配置文件和静态文件放置于/etc/nps/,并将可执行文件nps复制到/usr/bin/nps或者/usr/local/bin/nps,装置胜利后可在任何位置执行
nps test|start|stop|restart|status
关于windows系统,将会把配置文件和静态文件放置于C:\Program Files\nps,装置胜利后可将可执行文件nps.exe复制到任何位置执行
nps.exe test|start|stop|restart|status
流量数据耐久化
效劳端支持将流量数据耐久化,默许状况下是关闭的,假如有需求能够设置nps.conf
中的flow_store_interval
参数,单位为分钟
留意: nps不会耐久化经过公钥衔接的客户端
系统信息显现
nps效劳端支持在web上显现和统计效劳器的相关信息,但默许一些统计图表是关闭的,如需开启请在nps.conf
中设置system_info_display=true
自定义客户端衔接密钥
web上能够自定义客户端衔接的密钥,但是必需具有独一性
关闭公钥访问
能够将nps.conf
中的public_vkey
设置为空或者删除
关闭web管理
能够将nps.conf
中的web_port
设置为空或者删除
效劳端多用户登陆
假如将nps.conf
中的allow_user_login
设置为true,效劳端web将支持多用户登陆,登陆用户名为user,默许密码为每个客户端的考证密钥,登陆后能够进入客户端编辑修正web登陆的用户名和密码,默许该功用是关闭的。
用户注册功用
nps效劳端支持用户注册功用,可将nps.conf
中的allow_user_register
设置为true,开启后登陆页将会有有注册功用,
监听指定ip
nps支持每个隧道监听不同的效劳端端口,在nps.conf
中设置allow_multi_ip=true
后,可在web中控制,或者npc配置文件中(可疏忽,默许为0.0.0.0)
server_ip=xxx
代理到效劳端本地
在运用nps监听80或者443端口时,默许是将一切的恳求都会转发到内网上,但有时分我们的nps效劳器的上一些效劳也需求运用这两个端口,nps提供相似于nginx
proxy_pass
的功用,支持将代理到效劳器本地,该功用支持域名解析,tcp、udp隧道,默许关闭。
即: 假定在nps的vps效劳器上有一个效劳运用5000端口,这时分nps占用了80端口和443,我们想能运用一个域名经过http(s)访问到5000的效劳。
运用方式: 在nps.conf
中设置allow_local_proxy=true
,然后在web上设置想转发的隧道或者域名然后选择转发到本地选项即可胜利。
客户端
客户端启动
无配置文件形式
此形式的各种配置在效劳端web管理中完成,客户端除运转一条命令外无需任何其他设置
./npc -server=ip:port -vkey=web界面中显现的密钥
配置文件形式
此形式运用nps的公钥或者客户端私钥考证,各种配置在客户端完成,同时效劳端web也能够停止管理
./npc -config=npc配置文件途径
配置文件阐明
全局配置
[common] server_addr=1.1.1.1:8284 conn_type=tcp vkey=123 username=111 password=222 compress=true crypt=true rate_limit=10000 flow_limit=100 remark=test max_conn=10
项 | 含义 |
---|---|
server_addr | 效劳端ip:port |
conn_type | 与效劳端通讯形式(tcp或kcp) |
vkey | 效劳端配置文件中的密钥(非web) |
username | socks5或http(s)密码维护用户名(可疏忽) |
password | socks5或http(s)密码维护密码(可疏忽) |
compress | 能否紧缩传输(true或false或疏忽) |
crypt | 能否加密传输(true或false或疏忽) |
rate_limit | 速度限制,可疏忽 |
flow_limit | 流量限制,可疏忽 |
remark | 客户端备注,可疏忽 |
max_conn | 最大衔接数,可疏忽 |
域名代理
[common] server_addr=1.1.1.1:8284 vkey=123 [web1] host=a.proxy.com target_addr=127.0.0.1:8080,127.0.0.1:8082 host_change=www.proxy.com header_set_proxy=nps
项 | 含义 |
---|---|
web1 | 备注 |
host | 域名(http |
target_addr | 内网目的,负载平衡时多个目的,逗号隔开 |
host_change | 恳求host修正 |
header_xxx | 恳求header修正或添加,header_proxy表示添加header proxy:nps |
tcp隧道形式
[common] server_addr=1.1.1.1:8284 vkey=123 [tcp] mode=tcp target_addr=127.0.0.1:8080 server_port=9001
项 | 含义 |
---|---|
mode | tcp |
server_port | 在效劳端的代理端口 |
tartget_addr | 内网目的 |
udp隧道形式
[common] server_addr=1.1.1.1:8284 vkey=123 [udp] mode=udp target_addr=127.0.0.1:8080 server_port=9002
项 | 含义 |
---|---|
mode | udp |
server_port | 在效劳端的代理端口 |
target_addr | 内网目的 |
http代理形式
[common] server_addr=1.1.1.1:8284 vkey=123 [http] mode=httpProxy server_port=9003
项 | 含义 |
---|---|
mode | httpProxy |
server_port | 在效劳端的代理端口 |
socks5代理形式
[common] server_addr=1.1.1.1:8284 vkey=123 [socks5] mode=socks5 server_port=9004
项 | 含义 |
---|---|
mode | socks5 |
server_port | 在效劳端的代理端口 |
私密代理形式
[common] server_addr=1.1.1.1:8284 vkey=123 [secret_ssh] mode=secret password=ssh2 target_addr=10.1.50.2:22
项 | 含义 |
---|---|
mode | secret |
password | 独一密钥 |
target_addr | 内网目的 |
p2p代理形式
[common] server_addr=1.1.1.1:8284 vkey=123 [p2p_ssh] mode=p2p password=ssh2 target_addr=10.1.50.2:22
项 | 含义 |
---|---|
mode | p2p |
password | 独一密钥 |
target_addr | 内网目的 |
文件访问形式
应用nps提供一个公网可访问的本地文件效劳,此形式仅客户端运用配置文件形式方可启动
[common] server_addr=1.1.1.1:8284 vkey=123 [file] mode=file server_port=9100 local_path=/tmp/ strip_pre=/web/
项 | 含义 |
---|---|
mode | file |
server_port | 效劳端开启的端口 |
local_path | 本地文件目录 |
strip_pre | 前缀 |
关于strip_pre
,访问公网ip:9100/web/
相当于访问/tmp/
目录
断线重连
[common] auto_reconnection=true
nat类型检测
./npc nat
假如p2p双方都是Symmetic Nat,肯定不能胜利,其他组合都有较大胜利率。
状态检查
./npc status -config=npc配置文件途径
重载配置文件
./npc restart -config=npc配置文件途径
经过代理衔接nps
有时分运转npc的内网机器无法直接访问外网,此时能够能够经过socks5代理衔接nps
关于配置文件方式启动,设置
[common] proxy_url=socks5://111:222@127.0.0.1:8024
关于无配置文件形式,加上参数
-proxy=socks5://111:222@127.0.0.1:8024
支持socks5和http两种形式
即socks5://username:password@ip:port
或http://username:password@ip:port
群晖支持
可在releases中下载spk群晖套件,例如npc_x64-6.1_0.19.0-1.spk
相关功用
缓存支持
关于web站点来说,一些静态文件常常耗费更大的流量,且在内网穿透中,静态文件还需到客户端获取一次,这将招致更大的流量耗费。nps在域名解析代理中支持对静态文件停止缓存。
即假定一个站点有a.css,nps将只需从npc客户端读取一次该文件,然后把该文件的内容放在内存中,下一次将不再对npc客户端停止恳求而直接返回内存中的对应内容。该功用默许是关闭的,如需开启请在nps.conf
中设置http_cache=true
,并设置http_cache_length
(缓存文件的个数,耗费内存,不宜过大,0表示不限制个数)
数据紧缩支持
由于是内网穿透,内网客户端与效劳端之间的隧道存在大量的数据交流,为俭省流量,加快传输速度,由此本程序支持SNNAPY方式的紧缩。
- 一切形式均支持数据紧缩
- 在web管理或客户端配置文件中设置
加密传输
假如公司内网防火墙对外网访问停止了流量辨认与屏蔽,例如制止了ssh协议等,经过设置 配置文件,将效劳端与客户端之间的通讯内容加密传输,将会有效避免流量被拦截。
- nps运用tls加密,所以一定要保存conf目录下的密钥文件,同时也能够自行生成
- 在web管理或客户端配置文件中设置
站点维护
域名代理形式一切客户端共用一个http效劳端口,在晓得域名后任何人都可访问,一些开发或者测试环境需求失密,所以能够设置用户名和密码,nps将经过 Http Basic Auth 来维护,访问时需求输入正确的用户名和密码。
- 在web管理或客户端配置文件中设置
host修正
由于内网站点需求的host可能与公网域名不分歧,域名代理支持host修正功用,即修正request的header中的host字段。
运用办法:在web管理中设置
自定义header
支持对header停止新增或者修正,以配合效劳的需求
404页面配置
支持域名解析形式的自定义404页面,修正/web/static/page/error.html中内容即可,暂不支持静态文件等内容
流量限制
支持客户端级流量限制,当该客户端入口流量与出口流量到达设定的总量后会回绝效劳 ,域名代理睬返回404页面,其他代理睬回绝衔接,运用该功用需求在nps.conf
中设置allow_flow_limit
,默许是关闭的。
带宽限制
支持客户端级带宽限制,带宽计算方式为入口和出口总和,权重平衡,运用该功用需求在nps.conf
中设置allow_rate_limit
,默许是关闭的。
负载平衡
本代理支持域名解析形式和tcp代理的负载平衡,在web域名添加或者编辑中内网目的分行填写多个目的即可完成轮训级别的负载平衡
端口白名单
为了避免效劳端上的端口被滥用,可在nps.conf中配置allow_ports限制可开启的端口,疏忽或者不填表示端口不受限制,格式:
allow_ports=9001-9009,10001,11000-12000
端口范围映射
当客户端以配置文件的方式启动时,能够将本地的端口停止范围映射,仅支持tcp和udp形式,例如:
[tcp] mode=tcp server_port=9001-9009,10001,11000-12000 target_port=8001-8009,10002,13000-14000
逗号分隔,可单个或者范围,留意上下端口的对应关系,无法逐个对应将不能胜利
端口范围映射到其他机器
[tcp] mode=tcp server_port=9001-9009,10001,11000-12000 target_port=8001-8009,10002,13000-14000 target_ip=10.1.50.2
填写target_ip后则表示映射的该地址机器的端口,疏忽则便是映射本地127.0.0.1,仅范围映射时有效
守护进程
本代理支持守护进程,运用示例如下,效劳端客户端一切形式通用,支持linux,darwin,windows。
./(nps|npc) start|stop|restart|status 若有其他参数可加其他参数
(nps|npc).exe start|stop|restart|status 若有其他参数可加其他参数
KCP协议支持
KCP 是一个快速牢靠协议,能以比 TCP糜费10%-20%的带宽的代价,换取均匀延迟降低 30%-40%,在弱网环境下对性能能有一定的提升。可在nps.conf中修正bridge_type
为kcp ,设置后本代理将开启udp端口(bridge_port
)
留意:当效劳端为kcp时,客户端衔接时也需求运用相同配置,无配置文件形式加上参数type=kcp,配置文件形式在配置文件中设置tp=kcp
域名泛解析
支持域名泛解析,例如将host设置为*.proxy.com,a.proxy.com、b.proxy.com等都将解析到同一目的,在web管理中或客户端配置文件中将host设置为此格式即可。
URL路由
本代理支持依据URL将同一域名转发到不同的内网效劳器,可在web中或客户端配置文件中设置,此参数也可疏忽,例如在客户端配置文件中
[web1] host=a.proxy.com target_addr=127.0.0.1:7001 location=/test [web2] host=a.proxy.com target_addr=127.0.0.1:7002 location=/static
关于a.proxy.com/test
将转发到web1
,关于a.proxy.com/static
将转发到web2
限制ip访问
假如将一些风险性高的端口例如ssh端口暴露在公网上,可能会带来一些风险,本代理支持限制ip访问。
运用办法: 在配置文件nps.conf中设置ip_limit
=true,设置后仅经过注册的ip方可访问。
ip注册:
方式一: 在需求访问的机器上,运转客户端
./npc register -server=ip:port -vkey=公钥或客户端密钥 time=2
time为有效小时数,例如time=2,在当前时间后的两小时内,本机公网ip都能够访问nps代理.
方式二: 此外nps的web登陆也可提供考证的功用,胜利登陆nps web admin后将自动为登陆的ip注册两小时的允许访问权限。
留意: 本机公网ip并不是原封不动的,请自行留意有效期的设置,同时同一网络下,多人也可能是在公用同一个公网ip。
客户端最大衔接数
为避免歹意大量长衔接,影响效劳端程序的稳定性,能够在web或客户端配置文件中为每个客户端设置最大衔接数。该功用针对socks5
、http正向代理
、域名代理
、tcp代理
、udp代理
、私密代理
生效,运用该功用需求在nps.conf
中设置allow_connection_num_limit=true
,默许是关闭的。
客户端最大隧道数限制
nps支持对客户端的隧道数量停止限制,该功用默许是关闭的,如需开启,请在nps.conf
中设置allow_tunnel_num_limit=true
。
端口复用
在一些严厉的网络环境中,对端口的个数等限制较大,nps支持强大端口复用功用。将bridge_port
、 http_proxy_port
、 https_proxy_port
、web_port
都设置为同一端口,也能正常运用。
-
运用时将需求复用的端口设置为与
bridge_port
分歧即可,将自动辨认。 -
如需将web管理的端口也复用,需求配置
web_host
也就是一个二级域名以便辨别
多路复用
nps主要通讯默许基于多路复用,无需开启。
环境变量渲染
npc支持环境变量渲染以顺应在某些特殊场景下的请求。
在无配置文件启动形式下: 设置环境变量
export NPC_SERVER_ADDR=1.1.1.1:8284
export NPC_SERVER_VKEY=xxxxx
直接执行./npc即可运转
在配置文件启动形式下:
[common] server_addr={{.NPC_SERVER_ADDR}} conn_type=tcp vkey={{.NPC_SERVER_VKEY}} auto_reconnection=true [web] host={{.NPC_WEB_HOST}} target_addr={{.NPC_WEB_TARGET}}
在配置文件中填入相应的环境变量称号,npc将自动停止渲染配置文件交换环境变量
安康检查
当客户端以配置文件形式启动时,支持多节点的安康检查。配置示例如下
[health_check_test1] health_check_timeout=1 health_check_max_failed=3 health_check_interval=1 health_http_url=/ health_check_type=http health_check_target=127.0.0.1:8083,127.0.0.1:8082 [health_check_test2] health_check_timeout=1 health_check_max_failed=3 health_check_interval=1 health_check_type=tcp health_check_target=127.0.0.1:8083,127.0.0.1:8082
health关键词必需在开头存在
第一种是http形式,也就是以get的方式恳求目的+url,返回状态码为200表示胜利
第一种是tcp形式,也就是以tcp的方式与目的树立衔接,能胜利树立衔接表示胜利
假如失败次数超越health_check_max_failed
,nps则会移除该npc下的一切该目的,假如失败后目的重新上线,nps将自动将目的重新参加。
项 | 含义 |
---|---|
health_check_timeout | 安康检查超时时间 |
health_check_max_failed | 安康检查允许失败次数 |
health_check_interval | 安康检查距离 |
health_check_type | 安康检查类型 |
health_check_target | 安康检查目的,多个以逗号(,)分隔 |
health_check_type | 安康检查类型 |
health_http_url | 安康检查url,仅http形式适用 |
日志输出
日志输出级别
关于npc:
-log_level=0~7 -log_path=npc.log
LevelEmergency->0 LevelAlert->1
LevelCritical->2 LevelError->3
LevelWarning->4 LevelNotice->5
LevelInformational->6 LevelDebug->7
默许为全输出,级别为0到7
关于nps:
在nps.conf
中设置相关配置即可
相关阐明
获取用户真实ip
在域名代理形式中,能够经过request恳求 header 中的 X-Forwarded-For 和 X-Real-IP 来获取用户真实 IP。
本代理前会在每一个http(s)恳求中添加了这两个 header。
热更新支持
关于绝大多数配置,在web管理中的修正将实时运用,无需重启客户端或者效劳端
客户端地址显现
在web管理中将显现客户端的衔接地址
流量统计
可统计显现每个代理运用的流量,由于紧缩和加密等缘由,会和实践环境中的略有差别
当前客户端带宽
可统计每个客户端当前的带宽,可能和实践有一定差别,仅供参考。
客户端与效劳端版本比照
为了程序正常运转,客户端与效劳端的中心版本必需分歧,否则将招致客户端无法胜利衔接致效劳端。
webAPI
webAPI考证阐明
- 采用auth_key的考证方式
-
在提交的每个恳求后面附带两个参数,
auth_key
和timestamp
auth_key的生成方式为:md5(配置文件中的auth_key+当前时间戳)
timestamp为当前时间戳
curl --request POST \
--url http://127.0.0.1:8080/client/list \
--data 'auth_key=2a0000d9229e7dbcf79dd0f5e04bb084×tamp=1553045344&start=0&limit=10'
留意: 为保证平安,时间戳的有效范围为20秒内,所以每次提交恳求必需重重生成。
获取效劳端时间
由于效劳端与api恳求的客户端时间差别不能太大,所以提供了一个能够获取效劳端时间的接口
POST /auth/gettime
获取效劳端authKey
假如想获取authKey,效劳端提供获取authKey的接口
POST /auth/getauthkey
将返回加密后的authKey,采用aes cbc加密,请运用与效劳端配置文件中cryptKey相同的密钥停止解密
留意: nps配置文件中auth_crypt_key
需为16位
- 解密密钥长度128
- 偏移量与密钥相同
- 补码方式pkcs5padding
- 解密串编码方式 十六进制
细致文档
- 此文档近期可能更新较慢,倡议自行抓包
为便当第三方扩展,在web形式下可应用webAPI停止相关操作,详情见 webAPI文档
评论