<main>
#传到后面taf服务的http头, 多个头以,分隔,在后端taf服务,通过 current->getContext()["X-GUID"] 获取。
filterheaders = X-GUID|X-XUA|Host
# auto_proxy 是否打开通过主控发现代理,1打开, 0 关闭
# 在测试环境,可以配置为1, 方便服务调试, 在正式环境, 强烈建议配置为0, 以保证内部服务不随便在外网被调用,在还有配置了proxy的才可以调用。
auto_proxy=1
# 分布式多机协同流控 Obj,如果这里为空, 那么流控的配置指标都为单机指标
flow_report_obj=tars.GatewayServer.FlowControlObj
<base>
# tup 回包大小限制
rspsize=5242880
#tup_host 如果为空,那么所有host开头的,且没有path或者path为 / , 也判断为 tup 请求, 例如: prx.tup.whup.com|127.0.0.1|192.168.2.123
tup_host=prx.tup.whup.com
tup_path=/tup
json_path=/json
monitor_url=/monitor/monitor.jsp
</base>
# proxy 配置,前端通过 http 协议访问后端tars接口, 如果前面配置auto_proxy = 0, 那么这里一定需要配置了对应的servant别名, 才可以通过该别名进行该服务接口的访问。除了配置别名, 还可选支持不通的负载均衡策略,支持轮训,hash等。
<proxy>
# servant = server_full_obj [| hash_type [| http header key] ]
# hash_type: 0, 轮训; 1: requestid, 2: http头, 3: client ip
# Hello=TestApp.HelloServer.HelloObj | 1
# Hello=TestApp.HelloServer.HelloObj | 2 | X-GUID
#Hello=TestApp.HelloServer.HelloObj | 3
hello = TestApp.HelloServer.HelloObj
login = Base.LoginServer.LoginObj
# 可以支持其他环节的转发,配合 httpheader 一起使用,例如下面的配置中,http头 X-GUID 为 b7392a2d60604eac81892f6f9c0232f7 时,那么客户端请求 hello servant,会调用 Test.HelloServer.HelloObj@tcp -h 127.0.0.1 -p 22346 这个指定的服务节点,而不是调用以上默认的 TestApp.HelloServer.HelloObj
<test>
# test 环境转发规则,如果这里配置了的(例如hello)则优先用这里的配置,如果没有配置(例如login),那么还是用proxy下面默认的配置
hello = Test.HelloServer.HelloObj@tcp -h 127.0.0.1 -p 22346 | 2 | X-GUID
</test>
<dogfood>
# dogfood 环境转发规则
login = Base.LoginServer.LoginObj@tcp -h 192.168.2.123 -p 12000
</dogfood>
</proxy>
<proxy_interface_blacklist>
#proxy 接口黑名单
#配置格式: servant:func1|func2|....
hello:func1|func2
login:func1
</proxy_interface_blacklist>
<auth>
# 身份鉴权配置
# 按照不同的身份类型,配置不同的 login域,比如 phone_login, wx_login
# 如果多个域中配置的有冲突, 那么后面的配置覆盖前面的配置
<phone_login>
verify=Base.UserServer.UserObj
# 认证时候, 是否需要带上 body 内容给认证服务接口
verify_data=true
# 透传http头
verify_headers=X-GUID|X-RemoteIP|X-XUA
# 认证票据http头
auth_http_header=X-Token
# 默认不鉴权,匹配上了才鉴权,在匹配上了之后,如果在exclude部分有配置,则不鉴权
<auth_list>
# 支持应用级别、服务级别、接口级别
# 应用级别
Test1.*
# 服务obj级别
Test2.Test1Server.TestObj
Test2.Test2Server.TestObj
# 接口级别
Test3.TestServer.TestObj:func1|func2|funcn
Test3.HelloServer.HelloObj:test1
<exclude>
# 支持服务级别、接口级别
# 服务级别
Test1.Test1Server.TestObj
# 接口级别
Test2.Test1Server.TestObj:func1|func2|funcn
Test2.Test2Server.TestObj:test1
</exclude>
</auth_list>
</phone_login>
<wx_login>
verify=WX.WXUserServer.UserObj
auth_http_header=X-SessionID
<auth_list>
# 应用级别
WXNews.*
</auth_list>
</wx_login>
</auth>
#http头:值, 转到proxy某个服务
<env_httpheader>
# b7392a2d60604eac81892f6f9c0232f7 转发到 test 环境
X-GUID:b7392a2d60604eac81892f6f9c0232f7 = test
# 344bfdf1afb146ffa68b2bd69a57f193 转发到 dogfood 环境
X-GUID:344bfdf1afb146ffa68b2bd69a57f193 = dogfood
</env_httpheader>
<http_retcode>
# 定义哪些返回码做超时容错处理,哪些返回码做出错容灾处理, 这里一般不用改动
inactive=2|6
timeout=1|3
</http_retcode>
#http_router 为http协议转发配置,这里主要方便自动测试用, 在实际使用过程中, 建议在taf-web 的网关配置页面进行配置!
<http_router>
# 本机绑定host 来测试以下用例
# 192.168.2.131 x.tup.cn
# 192.168.2.131 x.tup.com
# 192.168.2.131 x1.tup.net
# 192.168.2.131 x.tuptest.com
# 192.168.2.131 f.tup.com
<station1>
# server_name, location, proxy_pass 类似nginx对应的字段
server_name=127.0.0.1
location=/testhost/
proxy_pass=http://127.0.0.1:8999
</station1>
# <fullhost>
# server_name=192.168.2.131
# location=/testhost/
# proxy_pass=http://127.0.0.1:8999/fullhost/
# </fullhost>
# <pre_host>
# server_name=*.tup.com
# location=/testhost/
# proxy_pass=http://127.0.0.1:8999/prehost/
# </pre_host>
# <suf_host>
# server_name=x.tup.*
# location=/testhost/
# proxy_pass=http://127.0.0.1:8999/sufhost/
# </suf_host>
# <reg_host>
# server_name=~x[0-9].tup.net$
# location=/testhost/
# proxy_pass=http://127.0.0.1:8999/reghost/
# </reg_host>
# <default_host>
# location=/testhost/
# proxy_pass=http://127.0.0.1:8999/defaulthost/
# </default_host>
# <full_path>
# server_name=f.tup.com
# location== /fullpath/
# proxy_pass=http://127.0.0.1:8999/full_path/
# </full_path>
# <startwith_path>
# server_name=f.tup.com
# location=^~ /startpath/
# proxy_pass=http://127.0.0.1:8999/startwith_path/
# </startwith_path>
# <reg_path>
# server_name=f.tup.com
# location=~ /[0-9]regpath/
# proxy_pass=http://127.0.0.1:8999
# </reg_path>
# <reg2_path>
# server_name=f.tup.com
# location=~* /[0-9]reg2PaTH/
# proxy_pass=http://127.0.0.1:8999
# </reg2_path>
# # <notreg_path>
# # server_name=f.tup.com
# # location=!~ /notreg/
# # proxy_pass=http://172.16.8.171:10008
# # </notreg_path>
# <comm_path>
# server_name=f.tup.com
# location=/commpath/
# proxy_pass=http://127.0.0.1:8999/comm_path/
# </comm_path>
# <default_path>
# server_name=f.tup.com
# location=/
# proxy_pass=http://127.0.0.1:8999/default_path/
# </default_path>
# <proxy_path>
# server_name=f.tup.com
# location=/proxypath/
# proxy_pass=http://127.0.0.1:8999
# </proxy_path>
# <proxy2_path>
# server_name=f.tup.com
# location=/proxy2path/
# proxy_pass=http://127.0.0.1:8999/
# </proxy2_path>
</http_router>
# tars db 连接信息,这里新的框架都默认建好了该db,如果没有建, 也可以自己手动建,建表信息见代码下面的:install/db_tars.sql
<db>
charset=utf8
dbhost =db.tars.com
dbname =db_base
dbpass =taf2015
dbport =3306
dbuser =tars
</db>
</main>