Fare Web Server Contenere Un Solo Sito?

0
303

Quando si inizia a imparare i nomi di dominio, indirizzi IP, server web e siti web di tutte le dimensioni e di lavoro insieme, può essere un po ‘ di confusione o travolgente, a volte. Come è impostato tutto il lavoro così bene? Oggi SuperUser Q&A post ha la risposta a un lettore curioso domande.

Oggi sessione ” Domande e Risposte viene a noi per gentile concessione di SuperUser—una suddivisione di Stack Exchange, un community-driven raggruppamento di Q&A siti web.

Foto per gentile concessione di Rosmarie Voegtli (Flickr).

La Domanda

SuperUser lettore user3407319 vuole sapere se i server web tenere solo un sito:

In base a quello che ho capito su DNS e collegamento di un nome di dominio con l’indirizzo IP del web server di un sito web viene memorizzato, questo significa che ogni server web può contenere solo un sito web? Se il server web non tenere più di un sito web, quindi come funziona il tutto si risolve in modo che io possa accedere al sito voglio senza problemi o mix up?

Fare web server contenere solo un sito web, o sono di più?

La Risposta

SuperUser collaboratore Bob ha la risposta per noi:

Fondamentalmente, il browser include il nome del dominio nella richiesta HTTP in modo che il web server non sa che il dominio è stato richiesto e in grado di rispondere di conseguenza.

Le Richieste HTTP

Ecco come la tipica richiesta HTTP succede:

1. L’utente fornisce un URL, in forma http://host:port/path.

2. Il browser estratti host (dominio) parte dell’URL e la traduce in un indirizzo IP (se necessario) in un processo noto come la risoluzione del nome. Questa traduzione può avvenire tramite DNS, ma non è necessario (per esempio, il file hosts locale comuni sistemi operativi ignora DNS).

3. Il browser apre una connessione TCP verso la porta specificata, o di default la porta 80 sull’indirizzo IP.

4. Il browser invia una richiesta HTTP. HTTP/1.1, assomiglia a questo:

L’intestazione host è standard e a richiesta in HTTP/1.1. Non era specificato in HTTP/1.0 spec, ma alcuni server supportano comunque.

Da qui, il server web ha diversi pezzi di informazioni che è possibile utilizzare per decidere che cosa la risposta dovrebbe essere. Si noti che è possibile per un singolo server web per essere associato a più indirizzi IP.

  • L’indirizzo IP richiesto, il socket TCP (l’indirizzo IP del client è disponibile, ma questo è raramente utilizzato, e a volte per il blocco e filtraggio)
  • La richiesta porta, il socket TCP
  • Il nome host richiesto, come specificato nell’intestazione host dal browser nella richiesta HTTP
  • Il percorso richiesto
  • Eventuali altre intestazioni (biscotti, etc.)

Come sembra che tu l’abbia notato, il più comune di hosting condiviso l’installazione di questi giorni mette di più siti web su un singolo indirizzo IP:combinazione di porta, lasciando solo l’host per differenziare tra i siti web.

Questo è noto come un Name-Based Virtual Host di Apache, di terra, mentre Nginx li chiama i Nomi dei Server in Blocchi del Server e IIS preferisce Server Virtuale.

Che cosa Circa HTTPS?

HTTPS è un po ‘ diverso. Tutto è identico per la realizzazione della connessione TCP, ma dopo che una di crittografia TLS tunnel deve essere stabilito. L’obiettivo è quello di non perdita di alcuna informazione circa la richiesta.

Per verificare che il server web sia proprietario di questo dominio, il web server deve inviare un certificato firmato da un terzo di fiducia. Il browser quindi confrontare questo certificato con il dominio richiesto.

Questo presenta un problema. Come funziona il web server a sapere quale host/sito web certificato di inviare, se c’è bisogno di fare questo prima che la richiesta HTTP viene ricevuto?

Tradizionalmente, questo è stato risolto avendo un indirizzo IP dedicato (o porto) per ogni sito che necessitano di HTTPS. Ovviamente, questo è diventato problematico, in quanto ci sono in esecuzione degli indirizzi IPv4.

Inserire SNI (Nome del Server di Indicazione). Il browser ora passa il nome host durante il TLS negoziati, in modo che il web server dispone di queste informazioni basta inviare il certificato corretto. Sul web lato server, la configurazione è molto simile a come HTTP host virtuali configurati.

Il rovescio della medaglia è il nome host è ora passati come testo normale prima di crittografia, ed è essenzialmente informazioni trapelate. Questo è di solito considerato un compromesso accettabile anche se considerando il nome host è normalmente esposto in una query DNS in ogni caso.

Che cosa succede Se Si richiede un Sito web da Solo l’Indirizzo IP?

Ciò che il web server non quando non sa in quale host specifico richiesto dipende dal server web, l’implementazione e la configurazione. In genere, c’è un “default”, “catch-all”, o “fall back” sito web specificato che fornirà risposte a tutte le richieste che non specificano un host.

Questo sito web predefinito può essere indipendente sito (che spesso mostra un messaggio di errore), o potrebbe essere qualsiasi altra pagina web sul server web a seconda delle preferenze di web server admin.

Ha qualcosa da aggiungere alla spiegazione? Sound off nei commenti. Vuoi leggere altre risposte da altri tech-savvy Stack Exchange, gli utenti? Controllare il thread di discussione qui.