mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-30 08:32:05 +00:00
c21b98a6d3
Introduced in:424981cde
REGTEST: add ifnone-forwardfor testb015b3eb1
REGTEST: add RFC7239 forwarded header tests see also:fbbbc33df
REGTESTS: Do not use REQUIRE_VERSION for HAProxy 2.5+
99 lines
2.5 KiB
Plaintext
99 lines
2.5 KiB
Plaintext
varnishtest "Test if-none param for the forwardfor option"
|
|
feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.6-dev0)'"
|
|
|
|
# This config tests the if-none parameter for the HTTP forwardfor option.
|
|
|
|
feature ignore_unknown_macro
|
|
|
|
haproxy h1 -conf {
|
|
global
|
|
# WT: limit false-positives causing "HTTP header incomplete" due to
|
|
# idle server connections being randomly used and randomly expiring
|
|
# under us.
|
|
tune.idle-pool.shared off
|
|
|
|
defaults
|
|
mode http
|
|
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
|
|
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
|
|
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
|
|
|
|
frontend none
|
|
bind "fd@${none}"
|
|
http-request set-src hdr(x-src)
|
|
option forwardfor if-none
|
|
use_backend be1 if { path /req1 }
|
|
use_backend be2 if { path /req2 }
|
|
use_backend be3 if { path /req3 }
|
|
|
|
frontend normal
|
|
bind "fd@${normal}"
|
|
http-request set-src hdr(x-src)
|
|
option forwardfor
|
|
use_backend be1 if { path /req1 }
|
|
use_backend be2 if { path /req2 }
|
|
|
|
|
|
frontend fe2
|
|
bind "fd@${fe2}"
|
|
http-request return status 200 hdr x-ff "%[req.fhdr_cnt(x-forwarded-for)]"
|
|
|
|
backend be1
|
|
option forwardfor
|
|
server s1 ${h1_fe2_addr}:${h1_fe2_port}
|
|
|
|
backend be2
|
|
option forwardfor if-none
|
|
server s1 ${h1_fe2_addr}:${h1_fe2_port}
|
|
|
|
backend be3
|
|
server s1 ${h1_fe2_addr}:${h1_fe2_port}
|
|
} -start
|
|
|
|
client c1 -connect ${h1_none_sock} {
|
|
txreq -req GET -url /req1 \
|
|
-hdr "x-src: 10.0.0.128" \
|
|
-hdr "x-forwarded-for: 127.0.0.1"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.x-ff == 2
|
|
|
|
txreq -req GET -url /req2 \
|
|
-hdr "x-src: 10.0.0.128" \
|
|
-hdr "x-forwarded-for: 127.0.0.1"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.x-ff == 1
|
|
|
|
txreq -req GET -url /req2 \
|
|
-hdr "x-src: 10.0.0.128"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.x-ff == 1
|
|
|
|
txreq -req GET -url /req3 \
|
|
-hdr "x-src: 10.0.0.128" \
|
|
-hdr "x-forwarded-for: 127.0.0.1"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.x-ff == 1
|
|
|
|
} -run
|
|
|
|
client c1 -connect ${h1_normal_sock} {
|
|
txreq -req GET -url /req1 \
|
|
-hdr "x-src: 10.0.0.128" \
|
|
-hdr "x-forwarded-for: 127.0.0.1"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.x-ff == 2
|
|
|
|
txreq -req GET -url /req2 \
|
|
-hdr "x-src: 10.0.0.128" \
|
|
-hdr "x-forwarded-for: 127.0.0.1"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.x-ff == 2
|
|
|
|
} -run
|