17Aug

Serverele Web suportă doar un singur site?

click fraud protection

Când începeți să aflați mai întâi cum se potrivesc și lucrează împreună numele de domeniu, adresele IP, serverele web și site-urile web, poate fi uneori confuz sau copleșitor uneori. Cum funcționează totul pentru a funcționa atât de bine? Postul de astăzi SuperUser Q & A are răspunsurile la întrebările curioase ale unui cititor.

Întrebarea de astăzi &Sesiunea de răspuns vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.

Foto prin amabilitatea lui Rosmarie Voegtli( Flickr).

Întrebarea

cititorul de utilizatori SuperUser3407319 vrea să știe dacă serverele web dețin doar un singur site fiecare:

Pe baza a ceea ce înțeleg despre DNS și legarea unui nume de domeniu cu adresa IP a serverului web pe care este stocat un site web,serverul web poate să dețină doar un singur site web? Dacă serverele web dețin mai mult de un site Web, atunci cum se rezolvă toate acestea, astfel încât să pot accesa site-ul pe care îl doresc fără probleme sau amestecări?

instagram viewer

Serverele web dețin fiecare câte un singur site sau mai mult?

Răspunsul răspunsului

SuperUser Bob are răspunsul pentru noi:

În principiu, browserul include numele de domeniu în cererea HTTP, astfel încât serverul web să știe ce domeniu a fost solicitat și poate răspunde în consecință.

Solicitări HTTP

Iată cum se întâmplă solicitarea dvs. tipică HTTP:

1. Utilizatorul furnizează o adresă URL, sub forma http: // host: port / path.

2. Browserul extrage partea gazdă( domeniu) a adresei URL și o traduce într-o adresă IP( dacă este necesar) într-un proces cunoscut sub numele de rezoluție de nume. Această traducere poate apărea prin intermediul DNS, dar nu trebuie să fie( de exemplu, fișierul gazdă local pe sistemele de operare obișnuite ocolește DNS).

3. Browserul deschide o conexiune TCP la portul specificat sau implicit la portul 80 pe acea adresă IP.

4. Browserul trimite o cerere HTTP.Pentru HTTP / 1.1, se arată astfel:

Antetul gazdei este standard și necesar în HTTP / 1.1.Nu a fost specificat în spec. HTTP / 1.0, dar unele servere îl acceptă oricum.

De aici, serverul web are mai multe informații pe care le poate utiliza pentru a decide care ar trebui să fie răspunsul. Rețineți că este posibil ca un singur server web să fie legat de mai multe adrese IP.

  • Adresa IP solicitată, de la soclul TCP( adresa IP a clientului este de asemenea disponibilă, dar acest lucru este rar utilizat și uneori pentru blocarea / filtrarea)
  • Portul solicitat, din soclul TCP
  • Numele gazdei solicitat,specificată în antetul gazdei de către browserul din cererea HTTP
  • Calea solicitată
  • Orice alte antete( cookie-uri etc.)

După cum pare să fi observat, cele mai frecvente setări de găzduire partajată în aceste zile plasează mai multe site-uri pe o singură adresă IP: combinație de porturi, lăsând doar gazdă să facă diferența între site-uri web.

Acesta este cunoscut ca un gazdă virtuală bazată pe nume în Apache-land, în timp ce Nginx le numește nume de server în blocuri server, iar IIS preferă serverul virtual.

Ce despre HTTPS?

HTTPS este un pic diferit. Totul este identic până la stabilirea conexiunii TCP, dar după aceea trebuie să fie stabilit un tunel TLS criptat. Scopul este de a nu scurgeri de informații despre cerere.

Pentru a verifica dacă serverul web deține de fapt acest domeniu, serverul web trebuie să trimită un certificat semnat de o terță parte de încredere. Browserul va compara acest certificat cu domeniul solicitat.

Aceasta prezintă o problemă.Cum știe serverul web ce certificat de gazdă / site web să trimită dacă trebuie să facă acest lucru înainte ca cererea HTTP să fie primită?

În mod tradițional, acest lucru a fost rezolvat printr-o adresă IP( sau port) dedicată pentru fiecare site web care necesită HTTPS.Evident, acest lucru a devenit problematic, pe măsură ce rupem adresele IPv4.

Introduceți SNI( denumirea numelui serverului).Browserul trece acum numele gazdei în timpul negocierilor TLS, astfel încât serverul web are aceste informații destul de devreme pentru a trimite certificatul corect. Pe partea serverului web, configurația este foarte asemănătoare cu modul în care sunt configurate gazdele virtuale HTTP.

Dezavantajul este numele gazdei este acum trecut ca text simplu înainte de criptare, și este, în esență, scurgeri de informații. Acest lucru este de obicei considerat un compromis acceptabil, deși considerând că numele gazdei este în mod normal expus într-o interogare DNS oricum.

Ce se întâmplă dacă solicitați un site web numai prin adresa IP?

Ce face serverul web atunci când nu știe care gazdă specifică pe care ați solicitat-o ​​depinde de implementarea și configurarea serverului web.În mod obișnuit, există un site de tip "implicit", "captură totală" sau "cadă înapoi" specificat care va oferi răspunsuri la toate solicitările care nu specifică în mod explicit o gazdă.

Acest site web implicit poate fi propriul său site independent( care de multe ori prezintă un mesaj de eroare) sau ar putea fi oricare dintre celelalte site-uri de pe serverul web, în ​​funcție de preferințele administratorului serverului web.

Trebuie să adăugați ceva la explicație? Sunați în comentarii. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.