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 “$urln”;

    }

    else {

        # URL non modificato
print “$urln”;

    }

}

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

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...