[squid-users] Re: Squid 3.2.2 + localhost

From: alberto.desi <alberto.desi_at_gmail.com>
Date: Tue, 23 Oct 2012 03:08:50 -0700 (PDT)

Yes, I've read the mail but I think that it is better to post it here... ;-)
The main problem is that if I rewrite the $url (localhost [::1], or
[5001::52] [3001::52] that are the addresses of the interfaces) it doesn't
work. If I rewrite $url with "302:" code in front it works... but the
behavior of the system is completely different.
Replying to your requests, I'm working on 4 virtual machine called origin,
core, mobile1, mobile2. In the origin and mobile I have apache servers
running... those are my caches!!! When I write localhost, I want to redirect
to the apache link

example:
I receive GET for http://[6001::101]/Big/big1.avi and I want to rewrite it
like http://[5001::52]/Big/big1.avi, that is the link to the apache in the
same machine where Squid is installed. This is not working. But if I
redirect to another machine http://[4001::52]/Big/big1.aviwith apache it
works.

OK?

*[rewriter_code]*
#!/usr/bin/perl

use warnings;
use strict;
use Fcntl ':flock';

require '/home/alberto/NodeConfig.pm'; #
dir/.../NodeConfig.pm
my $dirDB = ($NodeConfig::dir_DB); #
directory local database
my $db_name = ($NodeConfig::name_DB); # name of
local database
my $node_address = ($NodeConfig::node_address); # MAR's
address
my $DM_address = ($NodeConfig::DM_address); # DM's
address
my $dir_apache = ($NodeConfig::dir_Apache); #
directory of contents (Apache server)
my $dir_DM = ($NodeConfig::dir_DM); #
directory where there is the DM_req.pl in DM
my $rootpwd = ($NodeConfig::root_pwd); # password
for root access (to send the request to DM)

$|=1;

#-------------------------------------------------------------------------------------------------------------
#------------------------ PARAMETERS (modifying only ip address oCDN)
----------------------------------------

while (<>) {

                          my @params_http = split;
# parameters of http request
           my $url = $params_http[0]; # url of
http request
           my $ip_client = $params_http[1]; # ip client oh http
request

                          my $absTime = time();
# absolute time in seconds

                          my $db_name = ($NodeConfig::name_DB);
                          my $node_address = ($NodeConfig::node_address);
                          my @copie;

#----------------------------- REWRITE URL SQUID FUNCTION
----------------------------------------------------
# Check if there is the content inside he cache:
                      # if YES --> Go directly to MAR's cache
                      # if NO --> Forward the request to DM and wait the
best cache or Origin path

           open(LIST1, "< $dirDB"."$db_name"); # open local database for
READ
           flock ( LIST1, LOCK_SH );
           my @copieS=<LIST1>;
           flock ( LIST, LOCK_UN );
           close(LIST1);
           my $c;
           for $ind(0..$#copieS) {
                      my @values = split(';', $copieS[$ind]);
                      my $original = $values[0];
                      my $copy = $values[1];
                      my $iT1 = $values[2];

                      # seeking in the datbase if the content is in the
cache
                      if (($url eq $original)and($iT1 eq "Y")) {
                                                                                       
my @val1 = split('/', $url);
                                 if (-e
"$dir_apache"."$val1[3]"."/"."$val1[4]") {
                                                                                       
my $newURL = "$val1[0]//$node_address/$val1[3]/$val1[4]";

                                                                print "$newURL\n";
                                                                #print "302:"."$newURL\n";
                                                                exit;
                                 }
                      }
                          }
                        # request to DM for best position of content (Origin or others MARs)
                        my $req = request($DM_address,$dir_DM,$url,$node_address);

                        print "$req\n";
}

#--------------------------------------- END rewriteurl.pl
---------------------------------------------------

#------------------------------------ Soubroutine to Forward the request to
DM -------------------------------

# subroutine to send the request for best position to DM (ssh call)
sub request {

           my $DM_address = $_[0];
           my $dir_DM = $_[1];
           my $url = $_[2];
           my $node_address = $_[3];

           my $length = length($DM_address);
           my $DM_addressSSH = substr($DM_address,1,$length-2);
           my $req_DM = "sshpass -p '$rootpwd' ssh -o
StrictHostKeyChecking=no root@"."$DM_addressSSH"." \'cd $dir_DM && ".'perl
'."$dir_DM".'DM_req.pl'." $url $node_address\'";
           $req_DM = `$req_DM`;

           return $req_DM;

--
View this message in context: http://squid-web-proxy-cache.1019090.n4.nabble.com/Squid-3-2-2-localhost-tp4657098p4657103.html
Sent from the Squid - Users mailing list archive at Nabble.com.
Received on Tue Oct 23 2012 - 10:09:02 MDT

This archive was generated by hypermail 2.2.0 : Wed Oct 24 2012 - 12:00:04 MDT