www-modproxy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Graham Leggett <minf...@sharp.fm>
Subject Re: Not a Dev question .. but can someone help me
Date Wed, 14 Aug 2002 07:03:28 GMT
Lancashire, Pete wrote:

> What I'm trying to do is have a Apache 1.3.24 (eventually 2.x) server
> act only as a proxy.

Use v1.3.26 - the proxy you are using has bugs which have been fixed.

> http://outside/images       -> http://inside/
> and
> http://outside/images/      -> http://inside/
> Work just fine, and thanks to another list on  how to get this to
> work without a trialing slash.
> but no matter what I do I can not get the correct reverse translation to
> work
> http://inside/you-name-it to become http://outside/images/you-name-it

Remember that the ProxyPassReverse translation mechanism doesn't try and 
be clever - it simply does an exact prefix match replacement. Also 
remember that the translation *only* happens for stuff in the response 
headers, like redirects. It *does not* translate stuff in the HTML 
itself, because a) it's too expensive and b) it will probably get it 
wrong anyway.

As a general rule it is best to make sure that the URI you use on the 
frontend is the same as the URI used on the backend. ie, if it's 
http://outside/images/you-name-it on the outside, then it should be 
http://inside/images/you-name-it on the inside.

The reason for this is that if a web designer embeds an URL in a page 
called /images/blah.gif, it will work on the backend but won't work on 
the frontend. Usually it's a lot easier to keep the URL spaces the same, 
rather than trying to change your website to relative links afterwards.

> What I have so far in my httpd.conf is:
> -------------------------------------------------------------
> RewriteRule       ^/images/*(.+) http://inside/$1 [P]
> ProxyPass         /images/       <http://inside/>
> ProxyPassReverse  /images/       <http://inside/>
> ProxyPassReverse  /images/       <http://inside.hidden.xyz/>
> --------------------------------------------------------------

All you need is:

	/images/	http://inside/

A few points to note:

- Remember that ProxyPassReverse does an exact copy-replace. If the user 
tries the URL "http://outside/images" it *won't* match because 
"/images/" is not a substring of "/images".

- Makes sure that "inside" is the correct name for the website. If 
ProxyPassReverse says look for "http://inside/" but the inside website 
identifies itself as "http://inside.blah.zxy/" or "http://ip.add.re.ss/, 
  it definitely won't work. Garbage in, garbage out.

- You aren't keeping the URL spaces the same. ie, you should rather try 
this instead:

	/images/		http://inside/images/
	/servlet/		http://inside/servlet/

	"There's a moon
					over Bourbon Street

View raw message