Re: [squid-users] Multiple different parents and no default

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Thu, 30 Apr 2009 02:53:16 +1200

Markus Meyer wrote:
> Chris Robertson schrieb:
>
> Hi Chris,
>
>> What do you *want* to do?
>
> Yeah right. I'm confused. So I try it again. My Squid is "myproxy" and
> is an accelerator proxy for two webservers "jallah.image" and
> "kalimba.image". Both webservers have completely different content and I
> need to find a way to distinguish the client-requests.
>
> I can tell the clinets what to request. Content from "jallah.image"
> comes via http://myproxy/jallah_img/whatever.jpg and content for
> "kalimba.image" comes via http://myproxy/kalimba_img/blubba.jpg. So I
> could catch those with ACLs and url_regex.
> But when my proxy forwards the request as they are it won't work. So I
> have to rewrite the URL from http://myproxy/kalimba_img/blubba.jpg to
> http://myproxy/blubba.jpg.
>
> I tried this with the following configuration:
> cache_peer jallah.image parent 80 0 no-query no-digest originserver
> cache_peer kalimba.image parent 80 0 no-query no-digest originserver
> # jallah ACL
> acl jallah urlpath_regex ^/jallah_img
> cache_peer_access jallah.image allow jallah
> cache_peer_access kalimba.image deny jallah
> # kalimba ACL
> acl kalimba urlpath_regex ^/kalimba_img
> cache_peer_access kalimba.image allow kalimba
> cache_peer_access jallah.image deny kalimba
> url_rewrite_program /rewrite.pl
>
> Here code of rewrite.pl:
> #!/usr/bin/perl
> $|=1;
> while (<>) {
> # jallah
> s@/jallah_img@@;
> # kalimba
> s@/kalimba_img@@;
> print;
> }
>
> But this doesn't work because I think that the url_rewrite_program
> program runs before the ACLs. With the above setup I tested with
> requests for both webservers, http://myproxy/kalimba_img/blubba.jpg and
> http://myproxy/jallah_img/whatever.jpg, and "myproxy" always asked the
> first listed peer "jallah.image".
>
>> Go direct?
>>
>> acl jallah url_regex ^jallah_img\/
>> acl kalimba url_regex ^kalimba_img\/
>> always_direct allow !jallah !kalimba
>
> I'm not sure since I don't really understand what this is doing.
>
>> Pick a (pseudo) random parent for requests that DON'T match those terms
>> in the URL?
>>
>
> This won't work since the content on both webservers is different.
>
>> Use one parent proxy for all requests that DON'T match match those terms
>> in the URL?
>
> There is no parent proxy. I'm just trying to build a accelerator proxy
> for external static servers over which I have no control.
>
>>> I hope I could more or less make clear my issue.
>>>
>> More or less... :o)
>
> Hope this time I did a better job in explaining...
>
> Cheers,
> Markus
>

Markus, if you are altering the URL anyway you might find this a simpler
  way to do the whole thing:

create two sub-domains:
  jalla.myproxy
  kalimba.myproxy

configure cache_peers with forcedomain=X option (to change the domain
seen by the peer to X)

   cache_peer jallah.image parent 80 0 no-query no-digest originserver
forcedomain=jallah
   cache_peer kalimba.image parent 80 0 no-query no-digest originserver
forcedomain=kalimba

(or maybe you want to forcedomain=myproxy)

use dstdomain ACL to do the split, same as now.

leave the url-path identical to that found on the source servers.

Amos

-- 
Please be using
   Current Stable Squid 2.7.STABLE6 or 3.0.STABLE14
   Current Beta Squid 3.1.0.7
Received on Wed Apr 29 2009 - 14:53:27 MDT

This archive was generated by hypermail 2.2.0 : Wed Apr 29 2009 - 12:00:03 MDT