Keep Server Online
If you find the Apache Lounge, the downloads and overall help useful, please express your satisfaction with a donation.
or
A donation makes a contribution towards the costs, the time and effort that's going in this site and building.
Thank You! Steffen
Your donations will help to keep this site alive and well, and continuing building binaries. Apache Lounge is not sponsored.
| |
|
Topic: [Solved] Problem with proxy and Output filters |
|
Author |
|
hbbk
Joined: 13 Nov 2013 Posts: 3 Location: France
|
Posted: Wed 13 Nov '13 13:54 Post subject: [Solved] Problem with proxy and Output filters |
|
|
hi
I've an apacher server (Apache/2.2.22 (Debian)) wich goal is to proxy application server (tomcat).
Mainly https://apache/service proxy to http://tomcat:8080/
My problem is that the tomcat service hard write links in its results (http://tomcat:8080/result) so I put in place an external output filter to change all links in results to something usable by users. As the tomcat seems to outpuy gzipped content I added an inflate filter in the chain.
Code: |
<VirtualHost: *443>
...
ProxyPass /service http://tomcat:8080/share
ProxyPassReverse /service http://tomcat:8080/share
...
ExtFilterDefine MyFilter mode=output cmd="/bin/sed s#http://tomcat:8080#https://apache/service#g"
SetOutputFilter INFLATE;MyFilter
...
|
Unfortunately all this do not work
1- No output filter: ok, content-encoding: gzip
2- only INFLATE: ok, but still CE: gzip ??? (should be not?)
3- INFLATE;MyFilter : scrambled output, no CE gzip
4- MyFilter only: scrambled output, no CE gzip
1 seems normal, but 2 & 3 ?? Is there anything I don't understand in the way all this should work, or is there a bug or a conf directive to add somewhere ?
seems that the INFLATE filter do not work ?
I have absolutely no way to change anything in the tomcat server and I need to change these hardlinks...
thanks in advance for any help
Last edited by hbbk on Tue 19 Nov '13 13:39; edited 1 time in total |
|
Back to top |
|
maba
Joined: 05 Feb 2012 Posts: 64 Location: Germany, Heilbronn
|
Posted: Thu 14 Nov '13 20:07 Post subject: |
|
|
Hello,
while it might be possible to do these things using a zillion of Apache modules, it is typically not a good idea.
With Apache and a backend Tomcat an old golden IT rule still applies: "keep it simple".
So what I would do in such a situation is to map the Tomcat WebApp context one by one. Example: lets assume you have a jenkins behind your Apache then you instruct Tomcat to use the context path /jenkins. The Tomcat container will then work relative to that.
URL: http://localhost:8080/jenkins
On the Apache side, you would just match that
Code: |
<Location /jenkins>
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</Location>
|
This would just pass everything right through.
Maba |
|
Back to top |
|
hbbk
Joined: 13 Nov 2013 Posts: 3 Location: France
|
Posted: Tue 19 Nov '13 11:33 Post subject: |
|
|
thanks maba for your reply
but that's exactly what I do actually , I didn't put that in my previous message but everything is in a <Location> directive
the pb is that the tomcat application - this is alfresco - does hard write absolute links in it's code, with javascript, so somewhere inside the page there is somthing like
Code: | <script type="text/javascript">...
{
repositoryUrl: "http://tomcat:8080/alfresco"
}...
//]]></script> |
and that's what I want my filter to change elsewhere the webdav link for doculments is erroneous
I repeat I have no access to th etomcat server and all that I can do is filtering the results
any idea ? |
|
Back to top |
|
glsmith Moderator
Joined: 16 Oct 2007 Posts: 2268 Location: Sun Diego, USA
|
Posted: Tue 19 Nov '13 12:41 Post subject: |
|
|
Have you looked at mod_proxy_html? |
|
Back to top |
|
hbbk
Joined: 13 Nov 2013 Posts: 3 Location: France
|
Posted: Tue 19 Nov '13 13:39 Post subject: |
|
|
glsmith wrote: | Have you looked at mod_proxy_html? |
yeah !!!! thanks a lot glsmith !
Code: |
<Location /share>
# Il faut réécrire le contenu pour les liens webdav
ProxyHTMLExtended On
ProxyHTMLURLMap http://tomcat:8080 https://server
#ProxyHTMLLogVerbose On
SetOutputFilter proxy-html
</Location>
|
works perfectly |
|
Back to top |
|
|
|
|
|
|