Hi all,
it was the typo, problem has now been resolved (according to preliminary
testing).


On Thu, Dec 12, 2013 at 3:04 PM, Baptiste <[email protected]> wrote:

> there is a typo, a / missing before 'api' in path_beg:
>
> acl is_api hdr_beg(host) -i api
> acl is_api path_beg       -i /api
> acl somewhere hdr_sub(host) -i .somewhere.
> use_backend api if is_api
> use_backend www if somewhere
>
> Maybe it does not work because of the rest of your configuration...
> Please paste the whole configuration.
>
> Baptiste
>
>
> On Thu, Dec 12, 2013 at 2:37 PM, Athanasios | ZenGuard
> <[email protected]> wrote:
> > Dear all,
> > thanks for your input. I tried baptiste's configuration and it did not
> solve
> > my problem. I have a feeling we are getting there (we already kill a
> bug).
> > Any further ideas would be more than welcome :)
> >
> >
> > On Thu, Dec 12, 2013 at 2:29 PM, Baptiste <[email protected]> wrote:
> >>
> >> On Thu, Dec 12, 2013 at 12:35 PM, Athanasios | ZenGuard
> >> <[email protected]> wrote:
> >> > Dear HAProxy list,
> >> > I have a question regarding ACL logic.
> >> > First of all some background to my predicament:
> >> > recently we switched to different API and WWW slices. Usually, updated
> >> > clients will call api.somewhere for API and www.somewhere for WWW.
> This
> >> > holds true for 90% of the cases. A number (let's say 10%) have not
> >> > updated
> >> > their clients yet and they use the old scheme somewhere/api/etc to
> >> > access
> >> > the API. I am trying to provide a hotfix for that using HAProxy. Here
> is
> >> > my
> >> > relevant configuration which does NOT work:
> >> >
> >> >     acl is_api hdr_beg(host) -i api or path_beg -i api
> >> >     acl is_www hdr_dom(host) -i www.somewhere
> >> >     use_backend api if is_api
> >> >     use_backend www if is_www
> >> >     use_backend www if !is_api
> >> >
> >> > the problem is that when I curl www.somewhere/api/etc, HAProxy will
> use
> >> > the
> >> > is_www ACL, resulting in a 404 (and a non-working client for the
> >> > minority of
> >> > the users).
> >> >
> >> > Any input on how can I fix that would be more than welcome :)
> >>
> >>
> >> Hi,
> >>
> >> The OR function in acls doesn't work as you expected it to do.
> >> Here, you're looking for either api, or, path_beg, -i, api => all of
> >> them in the beginning of the host header.
> >>
> >> You can give a try to the configuration below:
> >> acl is_api hdr_beg(host) -i api
> >> acl is_api path_beg       -i api
> >> acl is_www hdr_sub(host) -i .somewhere.
> >> use_backend api if is_api
> >> use_backend www if is_www OR !is_api
> >>
> >> Baptiste
> >
> >
>

Reply via email to