You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Frank Liu <gf...@gmail.com> on 2022/09/22 23:48:07 UTC
[users@httpd] enablereuse, bug or feature?
Hi,
I am using the bundled apache on Debian 10 and Debian 11 as a reverse
proxy. I found one problem that is only in Debian 11 which bundles apache
2.4.54. The Debian 10 bundled apache 2.4.38 seems to work as expected.
ProxyPassMatch ^/(prod|dev)/([-a-z0-9]+)/(.*)$ http://$2.internal/$1/$2/$3
enablereuse=on keepalive=on
When the user chrome browses the apache using /prod/host1/something, apache
proxies the request to backend server host1.internal but then when chrome
browses /prod/host2/something, apache again sends to host1.internal. I
would expect the request to go to host2.internal.
Again, the issue is only with Apache 2.4.54 on Debian11. The old Debiain 10
(apache 2.4.38) works correctly using the same configuration. The request
goes to host1.internal and host2.internal based on the request URI.
If I remove "enablereuse=on" from Debian 11 apache config, it will work
correctly. Is this a feature or bug?
Thanks!
Frank
[users@httpd] Re: enablereuse, bug or feature?
Posted by Frank Liu <gf...@gmail.com>.
I did some more research and here are some findings:
1) Based on https://httpd.apache.org/docs/2.4/mod/mod_proxy.html ,
enablereuse default to On. This means if I remove it, it should be the same
as I set it to On. Unfortunately, this contradicts my observation in my
original email.
2) https://www.mail-archive.com/dev@httpd.apache.org/msg74177.html seems to
say things have changed from prior to 2.4.4x:
> + /* Prior to 2.4.4x, regex workers with dollar substitution
> + * were never matched and fell into the generic worker. To
> + * avoid dns/connection reuse compat issues, let's set
> + * disablereuse by default, which can still be overwritten
> + * by an explicit enablereuse=on.
> + */
This explains my observations in Debian 11 with Apache 2.4.54. When I
remove the explicit "enablereuse=on", it defaults to disablereuse.
Based on all above, it sounds like Apache enablereuse=on won't work with
ProxyPassMatch. We probably should update the Apache docs.
Now the question is if mod_proxy_http2, will ProxyPassMatch support
connection reuse?
Frank
On Thu, Sep 22, 2022 at 4:48 PM Frank Liu <gf...@gmail.com> wrote:
> Hi,
>
> I am using the bundled apache on Debian 10 and Debian 11 as a reverse
> proxy. I found one problem that is only in Debian 11 which bundles apache
> 2.4.54. The Debian 10 bundled apache 2.4.38 seems to work as expected.
>
> ProxyPassMatch ^/(prod|dev)/([-a-z0-9]+)/(.*)$ http://$2.internal/$1/$2/$3
> enablereuse=on keepalive=on
>
> When the user chrome browses the apache using /prod/host1/something,
> apache proxies the request to backend server host1.internal but then when
> chrome browses /prod/host2/something, apache again sends to host1.internal.
> I would expect the request to go to host2.internal.
>
> Again, the issue is only with Apache 2.4.54 on Debian11. The old Debiain
> 10 (apache 2.4.38) works correctly using the same configuration. The
> request goes to host1.internal and host2.internal based on the request URI.
>
> If I remove "enablereuse=on" from Debian 11 apache config, it will work
> correctly. Is this a feature or bug?
>
> Thanks!
> Frank
>
>
>
>