On 21.01.2013 15:26, Jim Jagielski wrote:
> Disabling BalancerInherit is only needed when using the
> Balancer Manager and only if there are conflicts between
> a Balancer in the top-level server and a vhost. With BI On,
> if a balancer is defined at the top level, then vhosts A
> and B get their own individual copy. But when using the Balancer
> Manager, it may be difficult or impossible to affect change in
> the balancer you want. If you use BM to change the Balancer
> of the top-level server, those changes do not get applied to
> the vhosts that had inherited them when httpd was 1st started.
> This can be confusing.

Understood and agreed.

> Having BI Off ensures that:
> 
>   1. All Balancers must be explicitly defined for whatever
>      vhosts are using them
>   2. All changes on those Balancers affect ONLY that specific
>      server.

I find it hard to really understand what's going on after applying the
patch. Many configuration items are still inherited even with BI Off,
but the underlying balancers and/or workers are no longer inherited.
Examples are ProxyPass or <Proxy>. I am unsure what kind of behavior
this could lead to. For example I tested:

ProxyPass /p/ balancer://myvhost:8080/
<Proxy balancer://myvhost:8080/>
    BalancerMember http://myvhost:8080/
</Proxy>

BalancerInherit Off

<VirtualHost *:8080>
    DocumentRoot "htdocs/myvhost"
    ServerName myvhost
    ErrorLog "logs/myvhost-error_log"
    CustomLog "logs/myvhost-access_log" common
</VirtualHost>

In this case the ProxyPass rule is inherited from the global server to
the VHost myvhost. When I access

curl -D - http://myvhost:8080/p/

I get a status 500 error page. VHost error log contains:

mod_proxy_balancer.c(73): canonicalising URL //loghost:8080/
proxy_util.c(1849): *: found reverse proxy worker for balancer://loghost/
mod_proxy.c(1081): AH01143: Running scheme balancer handler (attempt 0)
mod_proxy_http.c(2173): AH01113: HTTP: declining URL balancer://loghost/
AH01144: No protocol handler was valid for the URL /p/. If you are using
a DSO version of mod_proxy, make sure the proxy submodules are included
in the configuration using LoadModule.

It is unexpected that the rule gets inherited but the worker needed by
the rule not. I understand the reservations of Graham about breaking
configs, but i think the proposed implementation is harder to understand.

I don't have a solution, but I don't feel comfortable with the current
inherit proposal either. I'm very open for comments!

Regards,

Rainer

Reply via email to