I have been experiencing an odd phenomena which appears to indicate that 
haproxy is mangling certain requests with version 1.5.3. It looks as though '%' 
is being reencoded as '%25', such that encodings like '%3D' are being reencoded 
as '%253D', etc. I'm using a backend/frontend separated setup. I'm including a 
sanitized version of the config below.

Is there any reason that anyone can divine to explain why that mangling might 
be occurring? The same product configuration (without specific application 
pools) was implemented with 1.4.x without any issues.

frontend fe_qa_product_http
        bind x.x.x.x:80
        redirect scheme https if !{ ssl_fc }
        # Remove X-Powered-By header
        rspidel         ^X-Powered-By:.*$

frontend fe_qa_product_https
        bind x.x.x.x:443 ssl crt /etc/ssl/qa.pem
        reqadd X-Forwarded-Proto:\ https
        acl is_a path_beg -i /a/
        acl is_b path_beg -i /b/
        default_backend be_qa_default
        use_backend     be_qa_a if is_a
        use_backend     be_qa_b if is_b
        # Remove X-Powered-By header
        rspidel         ^X-Powered-By:.*$
        option          accept-invalid-http-request
        option          accept-invalid-http-response
        # Strip JSESSIONID from static resources
        reqirep         (.*)(\.css);jsession=.* \1\2
        reqirep         (.*)(\.js);jsession=.* \1\2
        reqirep         (.*)(\.jpg);jsession=.* \1\2
        reqirep         (.*)(\.png);jsession=.* \1\2
        reqirep         (.*)(\.wav);jsession=.* \1\2

backend be_qa_default
        balance leastconn
        option httpclose
        option forwardfor
        cookie JSESSIONID prefix
        option httpchk /about.html
        server srv1 10.0.x.x:80 check inter 10000 rise 2 fall 5
        server srv2 10.0.x.x:80 check inter 10000 rise 2 fall 5

backend be_qa_a
        balance leastconn
        option httpclose
        option forwardfor
        cookie JSESSIONID prefix
        option httpchk /a/about.html
        server srv1 10.0.x.x:80 check inter 10000 rise 2 fall 5
        server srv2 10.0.x.x:80 check inter 10000 rise 2 fall 5

backend be_qa_b
        balance leastconn
        option httpclose
        option forwardfor
        cookie JSESSIONID prefix
        option httpchk /b/about.html
        server srv1 10.0.x.x:80 check inter 10000 rise 2 fall 5
        server srv2 10.0.x.x:80 check inter 10000 rise 2 fall 5

-- 
Jeff Buchbinder
Rave Mobile Safety, Inc
[email protected] 

Reply via email to