#配置文件
TSW全局配置文件,业务逻辑挂载点,也是一个模块~。
{cwd}
-- 表示当前的工作目录,对应process.cwd()
{TSW}
-- 对应TSW
安装目录{config}
-- 表示启动参数config
,对应node tsw config={config}
配置文件
config.js
加载顺序如下
{config}
-- 对应node tsw config={config}
,1.2.2
新增$TSW_CONFIG_PATH
-- 环境变量指定配置文件路径,1.2.3
新增{cwd}/tsw.config.js
-- 1.2.2
新增/etc/tsw.config.js
/usr/local/node_modules/config.js
/data/release/tsw.config.js
-- 1.2.4
新增/data/release/node_modules/config.js
{TSW}/conf/config.js
Example
const config = plug('config');
appid
-- string
tswjs.org
颁发的appid
,默认null
appkey
-- string
tswjs.org
颁发的appkey
,默认null
this.appid = 'tsw007';
this.appkey = 'FuiFsFwe3asdF12sdwvkshk8';
devMode
-- boolean
开发者模式 ,本地代码修改后可立即生效,有损性能,默认false
httpAdminPort
-- number
http管理端口,只监听本地回路127.0.0.1
,默认值12701
reload
-- curl 127.0.0.1:12701/reload
runAtThisCpu
-- array|string
worker启动数量和cpu分配策略,默认值auto
'auto'
-- string
自动分配,核数x1[0,1]
-- array[number]
手动分配,启动两个worker,分别绑定到cpu0和cpu1上workerUid
-- string
worker运行时用户,默认值'nobody'
alphaFile
-- string
指定alpha
文件位置,用于固定的白名单,默认值null
alphaFileUrl
-- string
指定alpha
文件的网络位置,默认值null
blackIpFile
-- string
指定blackIp
文件位置,默认值null
blackIpFileUrl
-- string
指定blackIp
文件的网络位置,默认值null
cpuLimit
-- number
CPU使用限制,默认值85
,每个worker独立生效,超过限制自动开启过载保护。cpuRecordTime
-- number
CPU快照持续时间,默认值5000
。1.2.4
新增memoryLimit
-- number
内存使用限制,默认值768MB
,每个worker独立生效,超过限制自动淘汰。CCIPLimit
-- number
CC预警阈值,取自指标AVG_TSW_IP_STD_X10
,默认值200
,即聚集度达到50%
判定为恶意。-1
-- 表示关闭检测AVG_TSW_IP_STD_X10
-- IP访问次数加权方差,放大10倍方便观察CCIPLimitAutoBlock
-- boolean
CC拦截,启用自动拉黑,默认值false
。1.1.3
新增logger
-- object
日志级别logLevel
-- {'debug':10,'info':20,'warn':30,'error':40,'off':50}['info']
httpProxy
-- object
全局http代理设置,为fiddler设计,对在win7下开发比较有用ip
-- string
默认值'127.0.0.1'
port
-- number
默认值8888
enable
-- boolean
是否启用,默认值false
timeout
-- object
全局超时控制,单位ms
post
-- bumber
post like
请求处理超时,默认值30000get
-- bumber
get like
请求处理超时,默认值10000socket
-- bumber
socket
超时设置,默认值30000keepAlive
-- bumber
keepAlive
超时设置,默认值0this.timeout = {
socket: 30000,
post: 30000,
get: 10000,
keepAlive: 10000,
dns: 3000
}
beforeStartup(cpu)
-- function
启动完成前的回调cpu
-- number
当前工作进程对应的cpu
编号ajaxDefaultOptions
-- object
ajax
全局设置,默认值null
afterStartup(cpu)
-- function
启动完成后的回调cpu
-- number
当前工作进程对应的cpu
编号extendMod
-- object
支持重新定义TSW里部分方法的实现getUid(request)
-- function
重新定义从request
解析UID
的实现isTST(request)
-- function
重新定义TST(安全扫描器)请求httpAddress
-- string
http网卡,推荐'0.0.0.0'
httpPort
-- number
http端口,默认80
或者你喜欢的数字workerPortBase
-- number
worker起始端口,默认12801
。比如worker/7
对应的端口为12801+7=12808
websocket
场景下发送消息到指定worker里httpsAddress
-- string
https网卡,推荐'0.0.0.0'
,默认空httpsPort
-- number
https端口,默认空httpsOptions
-- object
https证书之类的,透传给Node.js
page404
-- string
404公益页面路由page419
-- string
419页面路由router
-- module
HTTP路由,需实现以下方法name(req)
-- function
负责req.url
向name
映射,让url
收敛find(name,req,res)
-- function
负责name
向module
映射,返回处理模块module
-- function
http逻辑处理模块,module.exports
需导出个函数allowArrayInUrl
-- boolean
url解析参数时是否输出数组默认值
-- false
false
-- 重复元素只取第一个true
-- 重复元素装在数组里allowHost
-- array[string|regex|object]
对非法域名返回508
,对内网IP无影响默认值
-- []
,空数组表示无限制string
-- 字符串类型全匹配regex
-- regex
类型调用regex.test(host)
方法匹配object
-- object
类型调用object.test(host)
方法匹配allowOriginHost
-- array[object]
默认值
-- undefined
,不配置不进行跨域检测object
host:[string]
需要跨域检测的域名origin:[string|regex|object]
允许跨域的域名string
-- 字符串类型全匹配,支持*.等通配符匹配regex
-- regex
类型调用regex.test(host)
方法匹配object
-- object
类型调用object.test(host)
方法匹配wsRouter
-- module
websocket路由,需实现以下方法name(ws)
-- function
负责ws.url
向name
映射find(name,ws)
-- function
负责name
向WebSocket module
映射module
-- module
websocket逻辑处理模块,需实现以下方法onConnection(ws)
-- 连接建立的回调函数onMessage(ws,message)
-- 收到消息的回调函数onClose(ws,code,reason)
-- 连接关闭时的处理函数onError(ws,err)
-- 连接出错时的处理函数allowWebSocketOriginHost
-- array[string|regex|object]
允许websocket跨域的host,其他跨域请求返回403默认值
-- []
,空数组表示允许跨域请求string
-- 字符串类型全匹配regex
-- regex
类型调用regex.test(host)
方法匹配object
-- object
类型调用object.test(host)
方法匹配isTest
-- boolean
测试环境标识 ,默认false
,为true
时自动发现testInfo
-- object
测试环境信息name
-- string
名称group
-- string
分组名,测试环境会根据分组自动聚合。groupName
-- string
分组名称。desc
-- string
测试环境描述order
-- number
用于排序owner
-- string
测试环境负责人this.isTest = true;
this.testInfo = {
"name" : "神秘商店",
"group" : "TSW",
"groupName" : "TSW团队",
"desc" : "没有人能知道这里在售卖什么",
"order" : 30,
"owner" : "TSW"
};
logReportUrl
-- string
染色日志上报,保持默认即可h5testSyncUrl
-- string
测试环境同步,保持默认即可utilCDUrl
-- string
CD冷却池,保持默认即可appReportUrl
-- string
指标上报,保持默认即可runtimeReportUrl
-- string
runtime告警,保持默认即可skyMode
-- boolean
天空模式 ,私有化部署时管理端标识,默认false
this.skyMode = true;
memcached
-- object
私有化部署时memcached
地址声明,默认值null
this.memcached = {
host : '127.0.0.1:11211',
timeout : 500,
poolSize : 20,
retries : 1,
maxQueueSize : 1000
};
beforeReportLog(reportData)
-- function
自定义日志上报reportData
-- object
包含上报信息的对象,具体字段可打印出来观看返回值
-- boolean
返回false
会中断TSW的默认上报逻辑beforeReportApp(reportData)
-- function
自定义指标上报reportData
-- object
包含上报信息的对象,具体字段可打印出来观看返回值
-- boolean
返回false
会中断TSW的默认上报逻辑beforeRuntimeReport(reportData)
-- function
自定义Runtime上报reportData
-- object
包含上报信息的对象,具体字段可打印出来观看返回值
-- boolean
返回false
会中断TSW的默认上报逻辑