httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tavian Barnes" <taviana...@gmail.com>
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 www.google.com, and the
> browser is configured to use serverA as a http proxy, right ?

Right.

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

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 www.google.com, 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 www.google.com (or serve them from its cache of
> www.google.com 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 www.google.com, and
> substitute the appropriate URL so that this item will be instead "proxied"
> to serverB instead of www.google.com.
> (In other words e.g., in all requests ending in ".gif", you change to
> hostname to "serverB").
> So for some requests, www.google.com 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:http://www.google.com/ig" 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 www.google.com (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 http://www.google.com/ig, rather than sending GET /ig to
www.google.com.  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:http://httpd.apache.org/userslist.html> for more info.
> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>  "   from the digest: users-digest-unsubscribe@httpd.apache.org
> For additional commands, e-mail: users-help@httpd.apache.org
>
>



-- 
Tavian Barnes

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message