Rewrite relative image paths in a reversed proxy setup
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Hi all.
I have an Apache server that takes care of load balancing four Tomcat servers, using mod_proxy.
The four Tomcat servers are setup in two clusters:
cluster1: 2 Tomcats 5.5.7
cluster2: 2 Tomcats 5.5.27
Now, I have depending on the application that is being requested, the request should be send to cluster1 or cluster2.
I have this setup working using the <Location> tag.
<Proxy balancer://mycluster1>
BalancerMember ajp://172.18.0.39:8009 route=vdebian1
BalancerMember ajp://172.18.0.40:8009 route=vdebian2
</Proxy>
<Proxy balancer://mycluster2>
BalancerMember ajp://172.18.0.78:8009 route=vdebian3
BalancerMember ajp://172.18.0.84:8009 route=vdebian4
</Proxy>
<Location /SEDO>
ProxyPass balancer://mycluster1 stickysession=JSESSIONID
ProxyPassReverse /
</Location>
<Location /SEDO-NEW>
ProxyPass balancer://mycluster2 stickysession=JSESSIONID
ProxyPassReverse /
</Location>
This works perfectly as I expected. However, the problem I have is that some images or links on my webapp are specified relatively.
For example <img href="" which results in errors because the image cannot be found on the root of my server, which is logical.
So, I thought I'd use the following:
<LocationMatch ^(.*\.gif)$>
ProxyPassMatch balancer://mycluster1/$1
</LocationMatch>
However, the problem is that I do not know to which application the image belongs, thus I don't know either to which cluster I should proxy the request.
So I thought using mod_proxy_html to rewrite the URLs in the HTML files:
<Location /SEDO>
ProxyPass balancer://mycluster1 stickysession=JSESSIONID
ProxyPassReverse /
SetOutputFilter proxy-html
ProxyHTMLURLMap (.*\.gif) http://172.18.0.39:8080/$1 Rie
</Location>
This works, however, what I do not like is that I map the URLs to a hardcoded server. What if the Tomcat instance is down? Then my images won't be loaded.
As far as I tried, it is also impossible to specify a cluster path as URL.
Thus, my question folks, how can I solve this? I've been thinking about using Vhosts, but I don't know if that would be the right solution. Maybe there is something easier, such as altering a HTTP reponse header in order to know which webapp requested the image.
Any help will be kindly appreciated.
[Index of Archives]
[Open SSH Users]
[Linux ACPI]
[Linux Kernel]
[Linux Laptop]
[Kernel Newbies]
[Security]
[Netfilter]
[Bugtraq]
[Squid]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Samba]
[Video 4 Linux]
[Device Mapper]