httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tavian Barnes" <>
Subject Re: [users@httpd] Forward proxies and aliases
Date Thu, 10 Jul 2008 15:57:45 GMT
> Tavian Barnes wrote:
>>> Just an idea from a guy who really knows next to nothing about proxies :
>>> If
>>> - a proxy configuration allows you to selectively forward some requests
>>> to a
>>> selection of sites, but not to a local file
>>> - but what you want to do is to redirect some URLs to a local file
>>> then can you not set up a local virtual host under some name, and forward
>>> ditto "local" requests to that local virtual host, whose pleasure it
>>> would
>>> be to serve the local stuff in question ?
>>> André
>> The thing is, when the browser sends the request to the local virtual
>> host, it's treating it like a proxy server.  So, the local host would
>> have to be able to recognise a proxy request for a certain page, and
>> return a local file instead, which is the same thing I'm trying to do
>> now.
> It's probably me in this case, but I believe one of us is not understanding
> this right.
> At the browser level, you are requesting items from, and the
> browser is configured to use serverA as a http proxy, right ?


> And what you want is that the proxy on serverA would get some stuff really
> from, but some other stuff it should deliver from local files
> instead, still right ?


> But that is something you cannot configure easily, because there is no way
> in the proxy to tell it to forward some requests to a http server, but serve
> some other ones from local files.  Still right ?

As far as I can tell.

> So, what I mean is that on the same host hosting serverA, (which you use as
> a http proxy), you also configure a separate serverB (virtual), which can
> deliver some "local" files (if a suitable request URL requests them). (or
> you set up serverB on a totally separate local host, whatever).
> The browser requests are all directed to, but still all
> requests go through serverA, because it is the configured http proxy.
> And serverA, by virtue of its proxy functionality would normally forward
> these requests to (or serve them from its cache of
> items).
> Now in serverA, you set up some early URL filter which will rewrite (modify)
> all requests which you do not really want to go to, and
> substitute the appropriate URL so that this item will be instead "proxied"
> to serverB instead of
> (In other words e.g., in all requests ending in ".gif", you change to
> hostname to "serverB").
> So for some requests, delivers the content, while from some
> others it will be serverB.  But all responses eventually go back through the
> serverA proxy, which delivers them to the browser.

Actually, it would be fine to just rewrite the url to a location on my
local web server.  I scratched my head figuring out how to do this,
until I noticed that my RewriteRule ^/ig wasn't matching, but .*ig.*
was.  I figured that the rewrite module must handle proxied urls
differently, so I wrote a script to use as a RewriteMap that simply
copied standard input to a file, and to standard output again.
Reading the file, it turns out (is this documented somewhere?) that
the url comes to the RewriteRule in the form of
"proxy:" which I can now rewrite to
http://localhost/ig.  So, problem solved.

> I believe the browser wouldn't know the difference, because for him all
> requests are to (while using the proxy serverA), and that's
> where it thinks it gets the responses from.  I don't think that the browser
> "matches" the responses back with its requests, to check inside if they
> really come from the same place.
> Because if it did, then the whole proxy mechanism wouldn't work in the first
> place.

When behind a proxy, the browser sends request to the proxy in the
form of GET, rather than sending GET /ig to  It has no idea if the proxy server did some tricky
things behind its back.

> Or maybe I'm totally wrong with this, but it seems at least plausible, no ?

Your idea is more complicated than I needed, but I think it should work too.

Thanks Andre, and everyone else; I've got it working.

> André
> ---------------------------------------------------------------------
> The official User-To-User support forum of the Apache HTTP Server Project.
> See <URL:> for more info.
> To unsubscribe, e-mail:
>  "   from the digest:
> For additional commands, e-mail:

Tavian Barnes

The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:> for more info.
To unsubscribe, e-mail:
   "   from the digest:
For additional commands, e-mail:

View raw message