I think this covers the most cases, I am not sure if the "-i" is needed or not:

 acl acl_aspc url_dom -i autos-prestige-collection HTTP_URL_ABS
 acl acl_aspc hdr_dom(Host) -i autos-prestige-collection
 use_backend aspc if acl_aspc

On 1/12/11 11:38 AM, Bryan Talbot wrote:
I think the problem is that url_dom operates on the URL found in the request
line but in your case, that URL is a relative URI (/) which does not contain a
host name.

I think if you use hdr_dom(Host) it'll do what you want.

-Bryan


On Wed, Jan 12, 2011 at 8:39 AM, Contact Dowhile <[email protected]
<mailto:[email protected]>> wrote:

    Hello,

    i have a pretty simple HAProxy configuration, but it can't match an
    super-simple acl..

    Here is the config
    global
       daemon
       user haproxy
       group haproxy
       maxconn 5000

    defaults
       mode http
       maxconn      4950
       retries      2
       timeout client 60s   # Client and server timeout must match the longest
       timeout server 60s   # time we may wait for a response from the server.
       timeout queue  60s   # Don't queue requests too long if saturated.
       timeout connect 4s   # There's no reason to change this one.
       timeout http-request 5s      # A complete request may never take that 
long.

    frontend web :80
        option forwardfor
        acl acl_aspc url_dom autos-prestige-collection
        use_backend aspc if acl_aspc
        default_backend webfarm

    backend aspc
        balance source
        server webC 10.1.0.26:80 <http://10.1.0.26:80> check

    backend webfarm
        balance source
        server webA 10.1.0.20:80 <http://10.1.0.20:80> check

    What i want is going to webfarm for every website, and going to aspc for
    http://*.autos-prestige-collection.com/*
    <http://autos-prestige-collection.com/*>
    This is because this site is located on a windows iis server...
    If i'm in debug mode here is what happen

    myhost etc # haproxy -d -f haproxy.cfg
    Available polling systems :
         sepoll : pref=400,  test result OK
          epoll : pref=300,  test result OK
           poll : pref=200,  test result OK
         select : pref=150,  test result OK
    Total: 4 (4 usable), will use sepoll.
    Using sepoll() as the polling mechanism.
    00000000:web.accept(0004)=0005 from [xx.xx.xx.xx:27615]
    00000000:web.clireq[0005:ffff]: GET / HTTP/1.1
    00000000:web.clihdr[0005:ffff]: Host: www.autos-prestige-collection.com
    <http://www.autos-prestige-collection.com>
    00000000:web.clihdr[0005:ffff]: User-Agent: Mozilla/5.0 (X11; U; Linux
    x86_64; en-US; rv:1.9.2.12) Gecko/20101027 Firefox/3.6.12
    00000000:web.clihdr[0005:ffff]: Accept:
    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    00000000:web.clihdr[0005:ffff]: Accept-Language:
    fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
    00000000:web.clihdr[0005:ffff]: Accept-Encoding: gzip,deflate
    00000000:web.clihdr[0005:ffff]: Accept-Charset: 
ISO-8859-1,utf-8;q=0.7,*;q=0.7
    00000000:web.clihdr[0005:ffff]: Keep-Alive: 115
    00000000:web.clihdr[0005:ffff]: Connection: keep-alive
    00000000:webfarm.srvrep[0005:0006]: HTTP/1.1 200 OK
    00000000:webfarm.srvhdr[0005:0006]: Date: Wed, 12 Jan 2011 16:31:13 GMT
    00000000:webfarm.srvhdr[0005:0006]: Server: Apache/2.2.17 (Fedora)
    00000000:webfarm.srvhdr[0005:0006]: X-Powered-By: PHP/5.3.4
    00000000:webfarm.srvhdr[0005:0006]: Content-Length: 3546
    00000000:webfarm.srvhdr[0005:0006]: Connection: close
    00000000:webfarm.srvhdr[0005:0006]: Content-Type: text/html; charset=UTF-8
    00000000:webfarm.srvcls[0005:0006]
    00000000:webfarm.clicls[0005:0006]
    00000000:webfarm.closed[0005:0006]

    We see that "Host: www.autos-prestige-collection.com
    <http://www.autos-prestige-collection.com>"  (so it should match my acl
    isn't it ???) but we see that haproxy redirected this query to "webfarm
    00000000:webfarm.srvhdr[0005:0006]: Server: Apache/2.2.17 (Fedora)"

    My iis server is going ok, if i put this in
    frontend web :80
        default_backend aspc

    i'm redirected to my iis server (but then ALL my websites are redirected
    to the iis which i don't want...)

    I tried with url_dom and url_sub, nothing changes, it never catch the acl
    rule...

    I'm running haproxy 1.4.10 on gentoo.

    Thanks for reading
    Guillaume




Reply via email to