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
|
varnishtest "Test the strict rewriting mode"
# This config tests the strict-mode of HTTP rules.
feature ignore_unknown_macro
server s1 {
rxreq
txresp \
-status 200
expect req.method == "GET"
expect req.url == "/req1"
expect req.http.x-hdr1 == "123456789012345678901234567890123456789012345678901234567890"
accept
rxreq
txresp \
-status 200
expect req.method == "GET"
expect req.url == "/req3"
expect req.http.x-hdr1 == "123456789012345678901234567890123456789012345678901234567890"
expect req.http.x-hdr3 == <undef>
} -start
server s2 {
rxreq
txresp \
-status 200 \
-hdr "x-req: /req1" \
-bodylen 2000
expect req.method == "GET"
expect req.url == "/req1"
accept
rxreq
txresp \
-status 200 \
-hdr "x-req: /req2" \
-bodylen 2000
expect req.method == "GET"
expect req.url == "/req2"
accept
rxreq
txresp \
-status 200 \
-hdr "x-req: /req3" \
-bodylen 2000
expect req.method == "GET"
expect req.url == "/req3"
accept
rxreq
txresp \
-status 200 \
-hdr "x-req: /req4" \
-bodylen 2000
expect req.method == "GET"
expect req.url == "/req4"
} -start
haproxy h1 -conf {
global
tune.bufsize 2048
tune.maxrewrite 128
defaults
mode http
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
option http-buffer-request
frontend fe1
bind "fd@${fe1}"
http-request set-header x-hdr1 123456789012345678901234567890123456789012345678901234567890
http-request set-header x-hdr2 123456789012345678901234567890123456789012345678901234567890 if { path /req2 }
http-request strict-mode off if { path /req3 }
http-request set-header x-hdr3 123456789012345678901234567890123456789012345678901234567890 if { path /req3 }
default_backend be1
backend be1
http-request set-header x-hdr3 123456789012345678901234567890123456789012345678901234567890 if { path /req4 }
server s1 ${s1_addr}:${s1_port}
frontend fe2
bind "fd@${fe2}"
http-response set-header x-hdr4 123456789012345678901234567890123456789012345678901234567890 if { res.hdr(x-req) /req4 }
default_backend be2
backend be2
http-response set-header x-hdr1 123456789012345678901234567890123456789012345678901234567890
http-response set-header x-hdr2 123456789012345678901234567890123456789012345678901234567890 if { res.hdr(x-req) /req2 }
http-response strict-mode off if { res.hdr(x-req) /req3 }
http-response set-header x-hdr3 123456789012345678901234567890123456789012345678901234567890 if { res.hdr(-req) /req3 }
server s2 ${s2_addr}:${s2_port}
} -start
client c1r1 -connect ${h1_fe1_sock} {
txreq \
-req GET \
-url /req1 \
-bodylen 2000
rxresp
expect resp.status == 200
} -run
client c1r2 -connect ${h1_fe1_sock} {
txreq \
-req GET \
-url /req2 \
-bodylen 2000
rxresp
expect resp.status == 500
} -run
client c1r3 -connect ${h1_fe1_sock} {
txreq \
-req GET \
-url /req3 \
-bodylen 2000
rxresp
expect resp.status == 200
} -run
client c1r4 -connect ${h1_fe1_sock} {
txreq \
-req GET \
-url /req4 \
-bodylen 2000
rxresp
expect resp.status == 500
} -run
client c2r1 -connect ${h1_fe2_sock} {
txreq \
-req GET \
-url /req1
rxresp
expect resp.status == 200
expect resp.http.x-hdr1 == "123456789012345678901234567890123456789012345678901234567890"
} -run
client c2r2 -connect ${h1_fe2_sock} {
txreq \
-req GET \
-url /req2
rxresp
expect resp.status == 500
} -run
client c2r3 -connect ${h1_fe2_sock} {
txreq \
-req GET \
-url /req3
rxresp
expect resp.status == 200
expect resp.http.x-hdr1 == "123456789012345678901234567890123456789012345678901234567890"
expect resp.http.x-hdr3 == <undef>
} -run
client c2r4 -connect ${h1_fe2_sock} {
txreq \
-req GET \
-url /req4
rxresp
expect resp.status == 500
} -run
|