robimassa

Another Subtext Powered Blog
posts - 17, comments - 0, trackbacks - 0

My Links

News

Archives

Squid usato come Reverse Proxy (con riscrittura dell’URL)

In un precedente post ho riportato la configurazione necessaria per la configurazione di un reverse proxy, nel caso preso in considerazione l’utilizzo era per la “protezione” di un Exchange OWA.

L’utilizzo dei RE-WRITERS è utile qualora si voglia controllare ed indirizzare la navigazione degli utenti, ma in questo caso è stato impiegato per “semplificare” un URL particolarmente complicato in accesso, tramite reverse-proxy, ad un servizio aziendale reso disponibile esternamente.

L’URL originale è https://portale.azienda.dominio.it/cart1/cart2/cart3/cart4/pagina.html

Volendo quindi “semplificare” l’URL agli utenti in https://portale.azienda.dominio.it/cart1 è stato necessario l’utilizzo di un re-writer che intercetta le chiamate e le redirige correttamente secondo l’URL completo e quindi corretto.

Esistono diverse modalità e diversi programmi anche molto sofisticati che effettuano questa operazione, tutti esterni a SQUID e vengono “chiamati” direttamente dal software di cache al quale restituiscono poi i valori eventualmente modificati.

In questo caso il sistema più semplice è risultato essere l’utilizzo di uno script PERL richiamato dalla direttiva  redirect_program definita nel file di configurazione dello SQUID.


#esempio di file Squid.con usato come reverse-proxy e re-writer di parte dell’URL

cache_effective_user squiduser
cache_effective_group wheel

https_port 443 accel vhost cert=/usr/local/squid/certificato/portale.crt key=/usr/local/squid/certificato/w3rev2.key
cache_peer 1.2.3.4 parent 9082 0 no-query originserver login=PASS proxy-only

redirect_rewrites_host_header off

acl TUTTI src all
http_access allow TUTTI

#attivazione redirect per modifica URL dall'esterno
redirect_program /usr/local/squid/script/RedirectUrl.pl

#definizione della posizione dei log del formato e della rotazione
logfile_rotate 55
log_mime_hdrs off
access_log /var/log/squid/log/access.log
cache_store_log /var/log/squid/log/store.log
cache_log /var/log/squid/log/cache.log

#definizione della posizione della cache
cache_dir ufs /var/log/squid/cache 100 16 256
cache_mem 50 MB
pid_filename /var/run/squid.pid


script RedirectUrl.pl richiamato da SQUID

#!/usr/bin/perl
use strict;

$| = 1;
# Lettura della variabile da elaborare ( stringa contenente l’URL)
while (<>) {

    my @elems = split;

    my $url = $elems[0];

     if ($url =~ m#^https://portale\.azienda\.dominio\.it/cart1(/.*)?#i) {

        $url = "https://portale.azienda.dominio.it/cart1/cart2/cart3/cart4/pagina.html${1}";

        print "$url\n";

    }

    else {

        # URL non modificato
         print "$url\n";

    }

}

E’ necessario che il file .pl relativo allo script abbia i permessi di esecuzione

riferimenti:

http://wiki.squid-cache.org/Features/Redirectors

http://www.powershelladmin.com/wiki/Linux_squid_proxy_url_rewriting_or_redirection

Print | posted on Wednesday, September 18, 2013 10:58 PM |

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 5 and 8 and type the answer here:

Powered by:
Powered By Subtext Powered By ASP.NET