-
Notifications
You must be signed in to change notification settings - Fork 1
/
default.config
154 lines (144 loc) · 3.84 KB
/
default.config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
// Copyright 2021 fangyousong(方友松). All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
// paddy web服务器的配置示例
// 配置文件采用json格式,仅支持单行注释以双斜线开头 //
{
"pid_file": "paddy.pid",
// glog日志保存目录
"log_dir": "/var/log/paddy",
// glog日志级别
"log_level": 3,
// 包含其他配置文件, 支持相对子目录(非/开头)和绝对目录(/开头)
// "include": ["subdir/.json","yyy.json","/home/wwwroot/zzz.json"],
"include": ["upstream.config"],
// 定义后端服务器组
"backend_group": {
"adx": [
// ip:port#比重 比重默认为1
"192.168.0.1:8080#3",
"192.168.0.2:8080#2",
"192.168.0.3:8080"
],
"dsp": [
"192.168.0.1:8081",
"192.168.0.2:8081",
"192.168.0.3:8081"
],
"engine": [
"192.168.0.1:8000",
"192.168.0.2:8000",
"192.168.0.3:8000"
]
},
// 定义http后端
"backend_def": [
{
// 别名, 须唯一
"alias": "ad_server",
// 包含的服务器组
"group_list": ["adx","dsp"],
// 包含的服务器 格式 ip:port#比重
"backend_list": ["192.168.0.2:8002#3","192.168.0.2:8002#2"],
// 负载策略 roundrobin|minpending|random|uri_param, 默认值为minpending
// roundrobin 轮询
// minpending 阻塞队列最小+轮询
// random 随机分布
// uri_param 根据uri的参数哈希分布
"method": "minpending",
// 保持的最大空闲连接
"max_idle_conn": 100,
// 等待响应超时毫秒数
"wait_response_timeout": 2000
},
{
"alias": "login_server",
"group_list": ["engine"],
"method": "random"
},
{
"alias": "freq_server",
"group_list": ["freq"],
"method": "uri_param",
// 生成哈希分布的URI参数名
"param_key": "key"
}
],
// 定义虚拟服务器。 为避免层级过多,每个配置文件只允许定义一个server节点,如果需要定义多个server,可以定义在不同的配置文件中,
// 然后通过include参数包含进来
"server": {
//侦听端口列表 ,tls结尾表示以tls方式侦听,需要加载tls证书文件, 如:"listen":["80", "443,tls"]
"listen":["8081"],
// 侦听的域名,绝对匹配 http[s]://host/location?xxx=xx...
"hosts": [
"localhost"
],
// 证书文件 pem
"tls_cert": "cert_file.pem",
// 证书私钥文件
"tls_cert_key": "private_key.key",
// location定向配置(正则表达式匹配,第1优先)
"location_regexp": [
{
"exp": "^\\/response_direct\\?.*",
"response_filter": [
[
[
["$set_response","=",1],
["$resp.status","=",200],
["$resp.body","=","response from {{$req.path}},{{$req_param.echo}}"]
]
]
]
},
{
"exp": "^\\/proxy_pass.*",
"backend": "login_server",
"proxy_pass": "http://{{domain}}{{uri}}"
},
{
"exp": "^\\/backend.*",
"backend": "login_server"
},
{
"exp": "^/paddy/default\\.config$",
"file_root": "/root/goproject/src"
}
],
// location定向配置(jsonexp匹配,第2优先)
"location_jsonexp": {
"exp": [
[
["$req.path", "=", "/ad_server"],
[
["$backend", "=", "ad_server"],
["$break", "=", 1]
]
],
[
["$req.path", "=", "/robot.txt"],
[
["$resp.status", "=","200"],
["$resp.body", "=", "not allowed"],
["$break", "=", 1]
]
],
[
["$req.path", "=", "/redirect"],
[
// 写重定向
// 指定了$resp.status,则立即返回,不考虑backend和file_root
["$resp.status", "=","302"],
// jsonexp支持直接宏替换{{$var}},用$var的值替换该宏
["$resp.redirect", "=", "https://baidu.com/from={{$req.uri}}"],
["$break", "=", 1]
]
]
],
"request_filter": [
],
"response_filter": [
]
}
}
}