I just want to make sure that this is the expected behavior:
[r...@tt3 ~]# haproxy -v
HA-Proxy version 1.4.8 2010/06/16
And the snippet of a config showing the behavior. If the response from
the server is a 404, we want to change the status to 555. If the status
is 555 add a Location header:
frontend main *:80
default_backend site1
backend site1
acl not_found status 404
acl bizzare_status status 555
rspadd X-Wibble:\ bizzare if bizzare_status
rspadd X-Wibble:\ not_found if not_found
rsprep ^HTTP/1.1\ 404\ (.*)$ HTTP/1.1\ 555\ Bizzare if not_found
server site1 127.0.0.1:81 check
Curl session against a haproxy with the above config:
% curl --verbose --silent http://tt3/foo.html > /dev/null
* About to connect() to tt3 port 80 (#0)
* Trying 10.10.12.17... connected
* Connected to tt3 (10.10.12.17) port 80 (#0)
> GET /foo.html HTTP/1.1
> User-Agent: curl/7.20.0 (i386-apple-darwin10.3.0) libcurl/7.20.0
OpenSSL/0.9.8n zlib/1.2.5 libidn/1.18
> Host: tt3
> Accept: */*
>
< HTTP/1.1 555 Bizzare
< Server: nginx/0.6.39
< Date: Fri, 09 Jul 2010 21:36:54 GMT
< Content-Type: text/html
< Content-Length: 3653
< Connection: close
< X-Wibble: bizzare
<
{ [data not shown]
* Closing connection #0
What this appears to show, is that both of the status based ACL's are
satisfied at different times. That is, it appears that the following happens:
- request sent to site1 and site1 response with a 404
- at this point acl 'not_found' is true, which means that
acl 'bizzare_status' must be false
- rsprep changes the 404 response to a 555
- rspadd adds 'X-Wibble: bizzare' header, which means that
acl 'bizzare_status' was true
I'm okay with this, and can work with it. I just want to make sure that this
is the expected behavior.
enjoy,
-jeremy
--
========================================================================
Jeremy Hinegardner [email protected]