Compago

...free knowledge

 
  • Increase font size
  • Default font size
  • Decrease font size
Home Manuali Utilità Configurazione web server Apache: virtual host

Configurazione web server Apache: virtual host

E-mail Stampa PDF

Sommario

Introduzione

Un sistema di server web Apache supporta più siti web.
Nel file di configurazione di Apache, oltre al nome "principale" si possono definire molteplici host virtuali (a volte chiamati "vhost" o "virtualhost") usando la direttiva  . A seconda del nome utilizzato per accedere a server web, Apache risponde adeguatamente, per esempio io potrei cercare di accedere al sito mio1.sito.com e allo stesso modo al mio2.sito.com, entrambi gestiti dal web server ma riconosciuti come differenti dall'esterno (vedi articolo Cosa sono i virtual host).
Se si desidera disporre di un unico sistema di supportare più siti web, è necessario configurare opportunamente Apache.


Ci sono due diversi tipi di host virtuale supportati da Apache.

  • Il primo tipo, chiamato a base di indirizzo o basati su IP, è legato all'indirizzo di rete numerico utilizzato per raggiungere il sistema.
  • L'altro tipo di host virtuale è basato sul nome, perché la risposta del server dipende dalla stringa che rappresenta l'indirizzo che si vuole raggiungere quello che è chiamato.

Proprio come più persone possono condividere un unico numero di telefono, siti web multipli possono condividere lo stesso indirizzo IP
Tuttavia, tutti gli indirizzi IP condivisi da più host virtuali devono essere dichiarati con una direttiva NameVirtualHost. 
La configurazione di un server Apache2 solitamente è strutturata in modo da non avere un unico file di configurazione, ma le varie aree funzionali vengono delegate a file separati; per esempio il file port.conf conterrà le direttive Listen con la quale si specifica su quali porte e su quali indirizzi il server deve rimanere in ascolto:

Listen *:80
<IfModule mod_ssl.c>
Listen *:443
</IfModule> 

Così facendo diciamo al server si rimanere in ascolto sulla porta 80 su su qualsiasi IP e sulla porta 443 solo se il modulo ssl è abilitato.

Il file apache2.conf conterrà tutte le direttive generali ovvero indipendenti dai virtualhost e avrà anche il compito di richiamare gli altri file di configurazione.

I vari virtualhost sebbene possano essere specificati all'interno di un unico file, di norma sono separati in file di configurazione diversi. Essi sono localizzati nella directory sites-available e quando diventano attivi verrà creato un link ad essi nella directory sites-enabled.

Per fare questo è possibile creare il link simbolico manualmente:

ln -s /etc/apache2/sites-available/miosito.com.conf /etc/apache2/sites-enabled/miosito.com.conf 

Oppure usando il comando a2ensite:

a2ensite miosito.com.conf

con un comando simile è possibile disabilitare il sito web, eliminano il suo virtualhost dalla directory dei siti abilitati, con il comandoa2dissite:

a2ensite miosito.com.conf

Ci sono due forme primarie di host virtuali:

  • basato su IP host virtuali, in cui ogni host virtuale dispone di un proprio indirizzo IP univoco
  • basato sul nome host virtuali, dove più di un host virtuale viene eseguito sullo stesso indirizzo IP ma con nomi diversi.

Impostare dei virtual host basati sul nome

Problema
Se abbiamo a disposizione solo un indirizzo ip ma abbiamo la necessità di usare più web server

Soluzione
Usare la direttiva NameVirtualHost * insieme con :

NameVirtualHost *
<VirtualHost *>
ServerName sito1.net
DocumentRoot "\var\www\sito1"
</VirtualHost>

<VirtualHost *>
ServerName sito2.net
DocumentRoot "\var\www\sito2"
</VirtualHost> 

Spiegazione
Con il sempre minor numero di IP a disposizione l'hosting virtuale basato sul nome è il metodo più comune per eseguire più siti web sulla stesso server Apache. 
"*" nel codice precedente significa che il web server deve funzionare su tutti gli indirizzi, ovvero su tutte le interfacce di rete presenti sulla computer. Per una macchina con un unico indirizzo, ciò significa che il server sarà in ascolto sia su questo indirizzo sia sull'indirizzo di loopback, conosciuto meglio come localhost. Quindi, se avete accesso al server del sistema fisico, è possibile visualizzare il sito web digitanto ad esempio "127.0.0.1". 
L'argomento per la direttiva  virtualhost è lo stesso di quello della direttiva NameVirtualHost
La direttiva NameVirtualHost deve essere usata solo una volta e non ripetuta per i vari virtualhost, dato che, nonostante vi siano più file di configurazione, la configurazione di Apache è come se fosse un unico file, quindi è sufficiente dichiararla una sola volta.
Le richieste per le quali non vi è un host virtuale di cui andrà al primo host virtuale elencati nel file di configurazione. Nel caso del precedente esempio, apache permette di navigare nel sito web http://sito1.net usando i file nella directory /var/www/sito1, mentre se digitassimo http://sito2.net vedremo i file nella directory /var/www/sito2.

Utilizzando la direttiva ServerAlias più nomi possono essere usati per riferirsi ad un determinato virtual host. Ad esempio:

NameVirtualHost *
<VirtualHost *>
  ServerName www.sito1.net
  ServerAlias sito1.net
  DocumentRoot "\var\www\sito1"
</VirtualHost>

permette di richiamare il sito web http://www.sito1.com anche usando l'indirzzo http://sito1.com.

Al posto del simbolo * nelle direttive NameVirtualHost e Virtualhost avremo potuto specificare l'indirizzo l'indirizzo IP, tipo

NameVirtualHost 192.168.1.15
<VirtualHost 192.168.1.15>
... 

Oppure specificando la porta:

NameVirtualHost 192.168.1.15:80
<VirtualHost 192.168.1.15:80>
... 

L'importante è che ci sia coerenza tra le due direttive, altrimenti potrebbero aver luogo errori imprevedibili, quindi se si dichiara la porta nel NameVirtualHost, la si dovrà dichiarare anche in tutti virtualhost.

Dichiarare la porta è molto importante nel caso si voglia abilitare il supporto ssl e quindi attivare il server anche sulla porta 443, questo modo si limita l'uso dei virtualhost basati sul nome alla porta 80:

NameVirtualHost *:80
<VirtualHost *:80>
ServerName sito1.miodominio.com DocumentRoot /var/www/sito1 </Virtualhost> <VirtualHost *:443> DocumentRoot /var/www/sito1 ServerName sito1.miodominio.com <Directory /var/www/sito1> allow from all Options +Indexes </Directory> SSLEngine on SSLCertificateFile /etc/ssl/certs/sito1.miodominio.com.crt SSLCertificateKeyFile /etc/ssl/private/sito1.miodominio.com.key SSLVerifyClient none
</VirtualHost>

Ora se usiamo https://sito1.miodominio.com oppure http://sito1.miodominio.com useremo il file nella directory /var/www/sito1, solo che nel primo caso useremo il protocollo ssl e la porta 443.
Questo andrebbe bene se ci fosse un solo vitualhost, ma se ne avessimo un altro, ad esempio http://sito2.miodominio.com che punta a /var/www/sito2 , beh in questo caso avremo un problema, perché ssl si basa sull'IP dell'host e funziona male con i virtualhost (vedi). Infatti se usassimo l'url https://sito2.miodominio.com verremo rimandati alla directory /var/www/sito1.

Nella dichiarazione relativa ai vari virtualhost sarà necessario inserire delle direttive Rewrite in modo da gestire i vari casi:

NameVirtualHost *:80
<VirtualHost *:80>
ServerName sito1.miodominio.com DocumentRoot /var/www/sito1 </Virtualhost>
<VirtualHost *:80>
ServerName sito2.miodominio.com DocumentRoot /var/www/sito2
</VirtualHost>

NameVirtualHost *:443 <VirtualHost *:443> DocumentRoot /var/www/sito1 ServerName sito1.miodominio.com <Directory /var/www/sito1> allow from all Options +Indexes </Directory> SSLEngine on SSLCertificateFile /etc/ssl/certs/sito1.miodominio.com.crt SSLCertificateKeyFile /etc/ssl/private/sito1.miodominio.com.key SSLVerifyClient none
</VirtualHost> <VirtualHost *:443> DocumentRoot /var/www/sito2 ServerName sito2.miodominio.com:443 SSLEngine off RewriteEngine On RewriteCond %{REQUEST_PORT} !^443$ RewriteRule ^/(.*) http://%{SERVER_NAME}/$1 [R=301,L] </VirtualHost>

Le richieste sulla porta 443 verranno gestite con il protocollo ssl se il server richiesto è il sito1.miodominio.com, mentre verranno gestite normalmente quelle relative al server sito2.miodominio.com.

Se poi volessimo che il sito1 lavorasse esclusivamente in https e il sito2 esclusivamente in http, allora alla configurazione del sito1 sulla porta 80 dovremo aggiungere una regola di Rewrite simile a quella inserita per il sito 2 sulla 443:

NameVirtualHost *:80
<VirtualHost *:80>
ServerName sito1.miodominio.com DocumentRoot /var/www/sito1 RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L] </Virtualhost>
<VirtualHost *:80>
ServerName sito2.miodominio.com DocumentRoot /var/www/sito2
</VirtualHost>

NameVirtualHost *:443 <VirtualHost *:443> DocumentRoot /var/www/sito1 ServerName sito1.miodominio.com <Directory /var/www/sito1> allow from all Options +Indexes </Directory> SSLEngine on SSLCertificateFile /etc/ssl/certs/sito1.miodominio.com.crt SSLCertificateKeyFile /etc/ssl/private/sito1.miodominio.com.key SSLVerifyClient none
</VirtualHost> <VirtualHost *:443> DocumentRoot /var/www/sito2 ServerName sito2.miodominio.com:443 SSLEngine off RewriteEngine On RewriteCond %{REQUEST_PORT} !^443$ RewriteRule ^/(.*) http://%{SERVER_NAME}/$1 [R=301,L] </VirtualHost>

E 'importante capire che aggiungere degli host virtuali al file di configurazione non è sufficiente ad aggiornare il server DNS. Infatti se un utente digitasse nel proprio browser la nuova stringa descritta nella direttiva apache non gli comparirebbe nessun sito, dato che a quella stringa non è associato ancora l'ip del vostro server.

È necessario quindi aggiungere un altro record nel server DNS in modo che i nuovi nomi siano legati l'indirizzo IP del server di sistema che ospita Apache. 
Per ulteriori informazioni su come configurare il server DNS, consultare la documentazione per il software DNS , o chiedere al provider di servizi Internet dove avete registrato il vostro dominio.

Impostazione di un virtual host come sito predefinito

Problema
Vogliamo che tutte le richieste, che non soddisfano i criteri di nessun altro virtual host, vengano dirette verso un host  virtuale predefinito, possibilmente mostrante un messaggio d'errore "sito non trovato".

Soluzione
aggiungere la seguente sezione prima di tutti gli altri:

<VirtualHost *>
ServerName default DocumentRoot /www/htdocs
ErrorDocument 404 /lista_siti.html
</VirtualHost>

Spiegazione
Questa soluzione è usata in un contesto name-based virtual hosts, per cui si è dato per scontato che vi siano anche altre sezioni in cui sono definiti dei virtual host con la notazione <VirtualHost *>.
E' stato usato il nome "default" per maggior chiarezza, ma avremmo potuto chiamarlo in qualsiasi altro modo.
Impostando come documento di errore "404" un elenco dei siti disponibili sul server si è data una risposta migliore che una semplice pagina d'errore, che non avrebbe aiutato di certo l'utente.
Sarebbe meglio esplicitare sempre tutti i validi ServerNames o ServerAliases, così che nessuno vada a finire nel sito di default. 
Se qualcuno accedesse al web server direttamente tramite indirizzo IP, o se questo fosse impostato correttamente in un virtual host, sarebbe meglio dare un informazione utile all'utente.

Impostazione di virtual host basati su indirizzo ip

Problema
Abbiamo più indirizzi a disposizione e vogliamo che ad ognuno corrisponda un sito web diverso.

Soluzione
Creare una sezione virtual host per ogni indirizzo IP:

 ServerName 127.0.0.1

<VirtualHost 10.0.0.1>
ServerName sito1.net
DocumentRoot "C:/Apache/Sites/sito1"
</VirtualHost>

<VirtualHost 10.0.0.2>
ServerName sito2.net
DocumentRoot "C:/Apache/Sites/sito2"
</VirtualHost> 

Spiegazione
I virtual host definiti qui sopra catturano tutte le richieste per gli indirizzi specificati, che poi vengono smistate e dirette ai  rispettivi web server presenti nelle due diverse directory.
Il ServerName specificato è usato come virtual host primario, ma non è usato per lo smistamento delle richieste verso l'host corretto.

Impostazione di sito di default per virtual host basati su indirizzo ip

Problema
Abbiamo bisogno di creare un sito di default dove indirizzare tutte le richieste che arrivano al web server che non soddisfano nessuno degli indirizzi elencati tra gli host virtuali.

Soluzione
Usare la parola chiave "_default_" per indicare il default host:

<VirtualHost _default_>
DocumentRoot /www/htdocs
</VirtualHost> 


Spiegazione
La parola chiave _default_ crea un host virtuale che cattura tutte le richieste per qualsiasi combinazioni indirizzo:porta  che non compaiono tra quelli presenti nella configurazione di apache.
La parola chiave _default_  può essere usata insieme ad una particolare porta, come ad esempio:

<VirtualHost _default_:443>

Usando questa sintassi si indicano tutti i virtual host che usano la porta 443 ma che non sono elencati nei virtual host.

Usare contemporaneamente virtual host basati su indirizzo ip e basati su nomi

Problema
Abbiamo più indirizzi IP a disposizione e su ognuno vogliamo che ci sia più di un sito web.

Soluzione
Usare una direttiva NameVirtualHost per ogni IP e procedere come se avessimo un solo indirizzo IP:

ServerName 127.0.0.1
NameVirtualHost 10.0.0.1
NameVirtualHost 10.0.0.2

<VirtualHost 10.0.0.1>
  ServerName sito1.net
  DocumentRoot "C:/Apache/Sites/sito1"
</VirtualHost>

<VirtualHost 10.0.0.1>
  ServerName sito2.net
  DocumentRoot "C:/Apache/Sites/sito2"
</VirtualHost>

<VirtualHost 10.0.0.2>
  ServerName sito3.net
  DocumentRoot "C:/Apache/Sites/sito3"
</VirtualHost> 

<VirtualHost 10.0.0.2>
  ServerName sito4.net
  DocumentRoot "C:/Apache/Sites/sito4"
</VirtualHost>

Spiegazione
Specificando l'indirizzo ip piuttosto che usando il "*" facciamo in modo che il server ascolti su un particolare indirizzo. quindi prima dichiariamo l'IP come nome(NameVirtualHost) e poi proseguiamo con la sua descrizione ( ).

Mass Virtual Hosting con l'estensione mod_vhost_alias

Problema
Vogliamo molti virtual host, tutti con la stessa configurazione.

Soluzione
Usare le variabili VirtualDocumentRoot e VirtualScriptAlias forniti dal modulo "mod_vhost_alias":

VirtualDocumentRoot /www/vhosts/%-1/%-2.1/%-2/htdocs
VirtualScriptAlias /www/vhosts/%-1/%-2.1/%-2/cgi-bin

Spiegazione
Questa soluzione utilizza le direttive fornite dal modulo mod_vhost_alias , che di default non dovrebbe essere attivo, quindi prima di usare queste variabili è bene attivarlo.
Queste direttive mappano le richieste su delle directory costruite usando la stessa parte dell'hostname presente nella richiesta. Ogni variabile rappresenta una parte del nome dell'host, così chè a un differente nome del sito corrisponde una differente directory.
In questo particolare esempio una richiesta per il sito www.example.com è indirizzata verso una directory/www/vhosts/com/e/example/htdocs, o verso /www/vhosts/com/e/example/cgi-bin (per le richieste di tipo CGI). tutte le variabili disponibili sono mostrate nella Tabella 1.

Tabella 1 - Variabili mod_vhost_alias
Variabile Significato
%% inserisce un %
%p inserisce una particolare porta nel virtual host
%M.N inserisce una parte del  nome


M e N possono avere un valore numerico intero positivo o negativo, che ha il seguente significato:

Tabella 2 - Significato dei valori delle variabili
Valore Significato
0 L'intero nome
1 La prima parte del nome
-1 L'ultima parte del nome
2 La seconda parte del nome
-2 La penultima parte del nome
2+ Dalla seconda parte in poi del nome
-2+ Dalla penultima parte in poi


Quando il valore è messo come prima parte dell'argomento, cioè nella parte M di %M.N, questo si riferisce alle parti dell'hostname divise dai punti. Quando invece è messa come secondo argomento allora si riferisce alle lettere di quella singola parte. Per esempio, se come nome del sito abbiamo www.example.com, il significato delle variabili sarà:

Tabella 3 - Esempi.
Variabile Significato
%0 www.example.com
%1 www
%2 example
%3 com
%-1 com
%-2 example
%-3 www
%-2.1 e
%-2.2 x
%-2.3+ ample


Quindi in relazione al numero di vhost, verranno create un uguale numero di cartelle ordinate alfabeticamente, grazie al nome del dominio.

Mass Virtual Hosting usando le funzioni di Rewrite

Problema
Sebbene ci sia un modulo (mod_vhost_alias) che serve proprio a gestire un vasto numero di virtual host, questo è un po limitato, dato che fa in modo che tutti i vhost siano configurati alla stessa maniera. Noi invece vogliamo gestire molti vhost ma configurati dinamicamente evitando d'usare il modulo mod_vhost_alias.

Soluzione
Usare le direttive fornite dal modulo mod_rewrite per mappare le richieste in base al nome su delle specifiche cartelle:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.com$
RewriteRule ^(.*)$ /home/%2$1

 

Spiegazione
Il modulo mod_vhost_alias è molto utile, ma non consente una gestione dinamica dei singoli vhost, e ci preclude la possibilità di utilizzare altri moduli , come ad esempio mod_userdir, mod_rewrite, and mod_alias, che appartengono sempre alla categoria URL-mapping modules, il che è mlto restrittivo.
Usando il modulo mod_rewrite si ha una efficienza minore, ma una flessibilità maggiore.
Per esempio, alcuni vhost potrebbero essere gestiti in maniera tradizionale mentre altri gestiti con le funzioni di riscrittura (rewrite).
Nella soluzione precedente per esempio indirizza le richieste con hostname www.something.com (o senza il www) verso la cartella/home/something.

Per maggiori informazioni
http://httpd.apache.org/docs/vhosts/
http://httpd.apache.org/docs/mod/mod_rewrite.html

SSL e vhost basati sui nomi

Problema
Vogliamo avere più siti web SSL sullo stesso server.

Soluzione
Nelle più comuni implementazioni dell' SSL, siamo limitati ad un solo sito SSL per indirizzo e numero di porta. Così, per ciascun sito avremo bisogno di un indirizzo IP o sullo stesso IP usare due porte differenti:

Listen 443
Listen 444
<VirtualHost 10.0.1.2:443>
ServerName secure1.example.com
DocumentRoot /www/vhosts/secure1
SSLEngine On
SSLCertificateFile /www/conf/ssl/secure1.crt
SSLCertificateKeyFile /www/conf/ssl/secure1.key
</VirtualHost>

<VirtualHost 10.0.1.3:443>
ServerName secure2.example.com
DocumentRoot /www/vhosts/secure2
SSLEngineOn
SSLCertificateFile /www/conf/ssl/secure2.crt
SSLCertificateKeyFile /www/conf/ssl/secure2.key
</VirtualHost>

<VirtualHost 10.0.1.3:444>
ServerName secure3.example.com
DocumentRoot /www/vhosts/secure3
SSLEngineOn
SSLCertificateFile /www/conf/ssl/secure3.crt
SSLCertificateKeyFile /www/conf/ssl/secure3.key
</VirtualHost>

Spiegazione
La limitazione che impone la restrizione ad avere un singolo host SSL per ogni IP non è imposta da Apache ma è implicita nel modo di funzionare dell'SSL.
Quando un browser si connette al server, la prima cosa che fa è negoziare con esso per una connessione sicura. durante questo processo, il server manda un certificato al client, che serve per la successiva criptazione dello scambio di dati. Affinché questo accada questa parte della transazione può essere basata solo sull'indirizzo IP del client che si è connesso, solo in seguito quest'ultimo farà la richiesta per una particolare risorsa sul web server.
Quando il server riceve l' "header field" dell'host, il certificato è già stato mandato...quindi è troppo tardi.

E' possibile avere più server SSL in ascolto su porte diverse dalla 443, se la porta è esplicitamente richiesta nell' URL. questo potrebbe consentire l'aggiramento del problema, ma costringerebbe l'utente finale a scrivere la porta corretta  durante la navigazione.

Logging per ogni Virtual Host

Problema
Vogliamo che ogni host virtuale abbia il suo file di log.

Soluzione
Specificare Errorlog e CustomLog all'interno della dichiarazione dell'host virtuale:

<VirtualHost *>
ServerName mio1.sito.net
DocumentRoot /home/sito/mio1/htdocs
ErrorLog /home/sito/mio1/logs/error_log
CustomLog /home/sito/mio1/logs/access_log combined
</VirtualHost>

Spiegazione
Le direttive per il log possono essere richiamate sia nella configurazione generale del sito che all'interno della dichiarazione dell'host virtuale . Quando stanno dentro queste ultime i log relativi a quello specifico vhost  saranno registrati dentro i file impostati.

Considerando la configurazione del server, bisogna considerare il numero massimo di connessioni previste, infatti
se abbiamo 100 virtual host e ognuno col suo file di log (sia accessi che errori) questo implica che stiamo usando 200 canali aperti, se la quota sul server è di 256 questo vuol dire che rimangono solo 56 che si occuperanno del resto. In pratica ci rimangono solo 56 connessioni che possono essere gestite contemporaneamente dal server.

Nella soluzione proposta i log vanno a finire su dei file che stanno su alcune cartelle, ed è bene assicurarsi che si abbiano i corretti permessi di scrittura su di esse.

 

Divisione di un Log file

Problema
Dato l'elevato numero di vhost, vogliamo che ci sia un unico file di log, ma tale da poterlo dividere in seguito. 

Soluzione

LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost
CustomLog logs/vhost_log vhost

Quindi dopo la rotazione del file:

split-logfile < logs/vhost_log

Spiegazione
La direttiva LogFormat in questa soluzione crea un logfile che è simile ad un comune file di log ma con l'informazione in più del nome del vhost che lo ha originato. La funzione split-logfile divide il file di log a seconda dei vari host virtuali.

Host virtuali basati su porte

Problema
Vogliamo un diverso contenuto per le connessioni HTTP su porte differenti.

Soluzione
Impostiamo esplicitamente il numero della porta nella dichiarazione :

Listen 8080

<VirtualHost 10.0.1.2:8080>
DocumentRoot /www/vhosts/port8080
</VirtualHost>

Listen 9090

<VirtualHost 10.0.1.2:9090>
DocumentRoot /www/vhosts/port9090
<VirtualHost>


Spiegazione
Il virtual hosting Port-based è molto simile agli altri tipi di tecniche mostrate in precedenza e ci potrebbero essere una serie di situazioni in cui questa modalità di virtualizzare potrebbe essere utile.
Se infatti avessimo un solo indirizzo IP e nessuna possibilità di aggiungere dei domini nei server DNS, o se il nostro ISP bloccasse il traffico in ingresso sulla porta 80, ecco che potrebbe essere utile avere uno o più web server su delle porte alternative
Gli utenti del sito in questione dovrebbero però aggiungere il numero della porta al normale hostname, riprendendo l'esempio precedente dovrebbero scrivere:

http://server.example.com:9090/

Mostrare lo stesso contenuto su diversi indirizzi

Problema
Vogliamo che lo stesso contenuto compaia su due dei notri indirizzi a disposizione.

Soluzione
Impostiamo esplicitamente i due IP nella dichiarazione :

NameVirtualHost 192.168.1.1
NameVirtualHost 172.20.30.40

<VirtualHost 192.168.1.1 172.20.30.40>
DocumentRoot /www/vhosts/server
ServerName server.example.com
ServerAlias server
</VirtualHost>

Spiegazione
In questo caso accedendo al web server direttamente con gli indirizzi IP si viene indirizzati allo stesso sito. Naturalmente questo ha senso se ci sono anche altri indirizzi che sono riservati ad altri contenuti, perché se si volesse  impostare lo stesso sito per tutti gli indirizzi si fa prima ad usare l'asterisco (*) che significa "tutti"

Ultimo aggiornamento ( Lunedì 03 Ottobre 2011 09:56 )  
Loading

Login




Chiudi