blob: cd86f74143c755c2f987dfe48ad285c4d5636e9c (
plain)
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
varnishtest "Misuses of defaults section defining TCP/HTTP rules"
feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev0)'"
feature ignore_unknown_macro
#
# anonymous defaults section cannot define TCP/HTTP rules
#
haproxy h1 -conf-BAD {} {
defaults
http-request set-header X-Hdr 1
}
haproxy h2 -conf-BAD {} {
defaults
http-response set-header X-Hdr 1
}
haproxy h3 -conf-BAD {} {
defaults
http-after-request set-header X-Hdr 1
}
haproxy h4 -conf-BAD {} {
defaults
tcp-request connection accept
}
haproxy h5 -conf-BAD {} {
defaults
tcp-request session accept
}
haproxy h6 -conf-BAD {} {
defaults
tcp-request inspect-delay 5s
tcp-request content accept
}
haproxy h7 -conf-BAD {} {
defaults
tcp-response inspect-delay 5s
tcp-response content accept
}
#
# defaults section defining TCP/HTTP rules cannot be used to init another
# defaults section
#
haproxy h8 -conf-BAD {} {
defaults invalid
tcp-response inspect-delay 5s
tcp-response content accept
defaults from invalid
mode tcp
}
#
# defaults section defining TCP/HTTP rules cannot be used to init a listen
# section
#
haproxy h9 -conf-BAD {} {
defaults invalid
tcp-request inspect-delay 5s
tcp-request content accept
listen li from invalid
mode tcp
bind "fd@${lih9}"
server www 127.0.0.1:80
}
#
# defaults section defining TCP/HTTP rules cannot be used to init frontend and
# backend sections at the same time
#
#
haproxy h10 -conf-BAD {} {
defaults invalid
tcp-request inspect-delay 5s
tcp-request content accept
frontend fe from invalid
mode tcp
bind "fd@${feh10}"
default_backend be1
backend be from invalid
mode tcp
server www 127.0.0.1:80
}
#
# defaults section defining 'tcp-request connection' or 'tcp-request session'
# rules cannot be used to init backend sections
#
haproxy h11 -conf-BAD {} {
defaults invalid
tcp-request connection accept
backend be from invalid
mode tcp
server www 127.0.0.1:80
}
haproxy h12 -conf-BAD {} {
defaults invalid
tcp-request session accept
backend be from invalid
mode tcp
server www 127.0.0.1:80
}
#
# defaults section defining 'tcp-response content' rules cannot be used to init
# a frontend section
#
haproxy h13 -conf-BAD {} {
defaults invalid
tcp-response inspect-delay 5s
tcp-response content accept
frontend fe from invalid
mode tcp
bind "fd@${feh10}"
}
haproxy h14 -conf-OK {
defaults tcp
tcp-response inspect-delay 5s
tcp-response content accept
backend be from tcp
mode tcp
server www 127.0.0.1:80
}
#
# Check arguments resolutions in rules. FE/BE arguments must be resolved, but
# SRV/TAB arguments without an explicit proxy name are not allowed.
#
haproxy h15 -conf-BAD {} {
defaults invalid
mode http
http-request set-header x-test "%[srv_conn(www)]"
backend be from invalid
server www 127.0.0.1:80
}
haproxy h16 -conf-BAD {} {
defaults invalid
mode http
http-request track-sc0 src
http-request deny deny_status 429 if { sc_http_req_rate(0) gt 20 }
backend be
stick-table type ip size 100k expire 30s store http_req_rate(10s)
server www 127.0.0.1:80
}
haproxy h17 -conf-OK {
defaults common
mode http
defaults def_front from common
http-request set-header x-test1 "%[fe_conn]"
defaults def_back from common
http-request track-sc0 src table be
http-request deny deny_status 429 if { sc_http_req_rate(0,be) gt 20 }
http-request set-header x-test2 "%[be_conn]"
http-request set-header x-test3 "%[srv_conn(be/www)]"
frontend fe from def_front
bind "fd@${feh15}"
default_backend be
backend be from def_back
stick-table type ip size 100k expire 30s store http_req_rate(10s)
server www 127.0.0.1:80
}
|