Bug 1296262

Summary: CacheEnable does not understand http url
Product: Red Hat Enterprise Linux 7 Reporter: Mike Millson <mmillson>
Component: httpdAssignee: Luboš Uhliarik <luhliari>
Status: CLOSED NOTABUG QA Contact: BaseOS QE - Apps <qe-baseos-apps>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.2CC: csutherl, jkaluza
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-01-08 06:14:02 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Mike Millson 2016-01-06 18:18:31 UTC
Apache documentation[1] claims you can specify url string such as:
CacheEnable  disk  http://www.example.org/

or 

CacheEnable  disk  http://

However, httpd apparently does not recognize these url strings, as it never looks to cache when they are used.

It appears CacheEnable only works file paths:
CacheEnable disk /

or 

CacheEnable disk /app/

I tested on both RHEL 7.2 and upstream httpd 2.4.18, and both behave the same. 

It appears to be this upstream bug:
https://bz.apache.org/bugzilla/show_bug.cgi?id=53787

References:
[1]https://httpd.apache.org/docs/2.4/mod/mod_cache.html#cacheenable

Comment 1 Mike Millson 2016-01-06 18:20:10 UTC
To reproduce on RHEL 7.2:

1. Tomcat content
> mkdir /var/lib/tomcat/webapps/hello/
> touch /var/lib/tomcat/webapps/hello/helloworld.txt
> put some text in helloworld.txt
> chmod -R root.tomcat /var/lib/tomcat/webapps/hello/

2. httpd.conf

LogLevel debug

<Proxy balancer://mycluster>
  BalancerMember ajp://127.0.0.1:8009 route=node0 loadfactor=1 ping=10 ttl=600 max=60
  ProxySet stickysession=JSESSIONID|jsessionid timeout=10
</Proxy>

ProxyStatus On
ProxyPassMatch ^/hello(.*) balancer://mycluster/hello$1

CacheRoot "/var/cache/httpd/proxy/"
CacheEnable disk /
#CacheEnable disk /hello/
#CacheEnable disk http://localhost/
#CacheEnable disk http://
CacheDirLevels 3
CacheDirLength 5
CacheIgnoreCacheControl On
CacheIgnoreNoLastMod On
CacheIgnoreQueryString On
CacheQuickHandler off

3. Force browser to reload helloworld.txt (ctrl+f5 with Firefox).

4. mod_cache is not part of the request processing when CacheEnable is the following:
CacheEnable disk http://localhost/
CacheEnable disk http://

Comment 2 Jan Kaluža 2016-01-07 13:12:21 UTC
According to documentation, "http://" or "http://localhost" works only for forward proxies. You are using reverse prosy for which this configuration does not work according to documentation. What's the real problem you are trying to solve?