Virtual hosting

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

Hosting virtuale è un metodo usato dai server web per ospitare il server web per più di un nome di dominio sullo stesso server, talvolta sullo stesso indirizzo IP.

Vi sono diverse tecniche di virtual hosting, con diverse limitazioni.

limitazioni

Vi sono due fattori che influenzano le configurazioni di virtual hosting possibili:

  • La versione di HTTP utilizzata (1.0 o 1.1), perché solo con HTTP/1.1 nella richiesta HTTP viene specificato l'URI completo di nome dell'host.
  • L'utilizzo o meno di HTTPS, perché se si usa HTTPS il server deve presentare un Certificato digitale dopo aver stabilito la connessione TCP ma prima di poter ricevere una richiesta HTTP contentente il nome dell'host richiesto dal client.

IP-based virtual hosting

Si assegnano più indirizzi IP ad un sistema. Questo può essere fatto associando diversi indirizzi IP ad una stessa interfaccia. A ciascun indirizzo IP è associato un nome DNS. Il server web guarda l'indirizzo IP destinazione su cui è stata ricevuta ciascuna richiesta, e di conseguenza sceglie quale contenuto servire.

Questa tecnica è possibile con HTTP/1.0 e con HTTPS, perché il server deve guardare solo l'indirizzo IP su cui ha ricevuto la richiesta per decidere quale contenuto servire e quale certificato presentare.

Lo svantaggio è che per ciascun sito è richiesto un indirizzo IP dedicato, e questo può essere costoso.

port-based virtual hosting

Questa tecnica è una variante della precedente, dove il server ascolta sullo stesso indirizzo IP ma su diverse porte TCP, e a ciascuna porta TCP è associato un sito (ed eventualmente il relativo certificato).

In questo modo si evita la necessità di un indirizzo IP per sito, ma si usano porte non standard, che possono essere bloccate da firewall o proxy, e si devono usare URI contenenti il numero di porta, come "http://www.miosito.com:8011", più difficili da ricordare.

name-based virtual hosting

Questa tecnica richiede l'uso di HTTP/1.1, che prevede la trasmissione dell'hostname richiesto nella richiesta HTTP.

Il server è configurato con un solo indirizzo IP, a cui sono associati i nomi DNS di tutti i siti ospitati. Quando il server riceve una richiesta HTTP, analizza l'hostname richiesto e decide di conseguenza quale dominio servire.

Questo permette di utilizzare un solo indirizzo IP per molti siti utilizzando porte TCP standard e URI senza la specifica della porta.

Questa tecnica è comunemente usata da providers di spazio web per siti internet.

name-based virtual hosting con HTTPS

Se si usa HTTPS il server, dopo aver ricevuto una connessione TCP, deve stabilire la sessione SSL, e per fare questo deve presentare il proprio certificato per provare al client la sua identità.

Se però si usa il name-based virtual hosting, ciascun sito ospitato avrà in generale un proprio certificato, ma il server che riceve una connessione TCP non sa ancora quale sito gli viene richiesto, e quindi quale certificato deve presentare. Il browser, non ricevendo il certificato corrispondente al sito che ha richiesto, mostrerà un errore.

Questa tecnica può essere usata solo in casi particolari, ovvero quando è possibile presentare un certificato che sia accettabile per tutti i siti HTTPS ospitati, mediante l'uso di certificati con DN wildcard (*.miodominio.com) e/o di nomi alternativi nel certificato.

vedi anche