17Aug

Har webservere kun ét websted hver?

click fraud protection

Når du først begynder at lære, hvordan domænenavne, IP-adresser, webservere og websites alle passer og arbejder sammen, kan det til tider være lidt forvirrende eller overvældende. Hvordan er det hele oprettet for at fungere så smidigt? Dagens SuperUser Q & A-indlæg har svarene på en nysgerrig læsers spørgsmål.

Dagens Spørgsmål &Svar session kommer til os høflighed af SuperUser-en underafdeling af Stack Exchange, en community-drevet gruppe af Q & A-websteder.

Foto courtesy of Rosmarie Voegtli( Flickr).

Spørgsmål

SuperUser-læseren user3407319 ønsker at vide, om webservere kun har et websted hver:

betyder det hver på grund af, hvad jeg forstår om DNS og linking af et domænenavn med IP-adressen på webserveren, en webside gemt påwebserver kan kun holde en hjemmeside? Hvis webservere holder mere end et websted, hvordan bliver det hele løst, så jeg kan få adgang til den hjemmeside, jeg vil have uden problemer eller mix ups?

Har webservere kun ét websted hver, eller holder de mere?

instagram viewer

Svaret

SuperUser-bidragyder Bob har svaret for os:

I grunden indeholder browseren domænenavnet i HTTP-anmodningen, så webserveren ved, hvilket domæne der blev anmodet om og kan reagere i overensstemmelse hermed.

HTTP-anmodninger

Her er, hvordan din typiske HTTP-anmodning sker:

1. Brugeren giver en URL i form http: // vært: port / sti.

2. Browseren uddrag værtsdelen( domænet) af webadressen og oversætter den til en IP-adresse( om nødvendigt) i en proces, der kaldes navneopløsning. Denne oversættelse kan forekomme via DNS, men den behøver ikke at( for eksempel omgår den lokale værtsfil på almindelige operativsystemer DNS).

3. Browseren åbner en TCP-forbindelse til den angivne port eller standard til port 80 på den IP-adresse.

4. Browseren sender en HTTP-anmodning. For HTTP / 1.1 ser det sådan ud:

Værtsoverskriften er standard og kræves i HTTP / 1.1.Det var ikke angivet i HTTP / 1.0 spec, men nogle servere understøtter det alligevel.

Herfra har webserveren flere stykker information, som den kan bruge til at bestemme, hvad svaret skal være. Bemærk, at det er muligt for en enkelt webserver at være bundet til flere IP-adresser.

  • Den efterspurgte IP-adresse, fra TCP-stikket( klientens IP-adresse er også tilgængelig, men det bruges sjældent og til tider til blokering / filtrering)
  • Den ønskede port, fra TCP-stikket
  • Det ønskede værtsnavn, somangivet i værtsoverskriften af ​​browseren i HTTP-anmodningen
  • Den ønskede vej
  • Eventuelle andre overskrifter( cookies osv.)

Som du synes at have bemærket, sætter de mest almindelige delte hostingopsætninger i disse dage flere websites på en enkelt IP-adresse: portkombination, der kun forlader værten for at skelne mellem websteder.

Dette er kendt som en navnebaseret virtuel vært i Apache-land, mens Nginx kalder dem servernavne i serverblokke, og IIS foretrækker Virtual Server.

Hvad med HTTPS?

HTTPS er lidt anderledes. Alt er identisk med etableringen af ​​TCP-forbindelsen, men efter det skal der etableres en krypteret TLS-tunnel. Målet er ikke at lække nogen information om anmodningen.

For at kontrollere, at webserveren faktisk ejer dette domæne, skal webserveren sende et certifikat underskrevet af en betroet tredjepart. Browseren vil derefter sammenligne dette certifikat med det domæne, det ønskede.

Dette giver et problem. Hvordan kan webserveren vide, hvilken vært / webstedets certifikat der skal sendes, hvis det skal gøres før HTTP-anmodningen er modtaget?

Traditionelt blev dette løst ved at have en dedikeret IP-adresse( eller port) til hver hjemmeside, der kræver HTTPS.Det er naturligvis blevet problematisk, da vi løber ud af IPv4-adresser.

Indtast SNI( Servernavn Indikation).Browseren passerer nu værtsnavnet under TLS-forhandlingerne, så webserveren har disse oplysninger tidligt nok til at sende det korrekte certifikat. På webserver siden er konfigurationen meget lig den måde, hvorpå HTTP virtuelle værter er konfigureret.

Ulempen er værtsnavnet er nu bestået som almindelig tekst før kryptering, og er i det væsentlige lækket information. Dette betragtes normalt som en acceptabel afvejning, men i betragtning af, at værtsnavnet normalt udsættes for en DNS-forespørgsel alligevel.

Hvad hvis du kun anmoder om et websted via IP-adresse?

Hvad webserveren gør, når den ikke ved, hvilken bestemt vært du har anmodet om, afhænger af webserverens implementering og konfiguration. Typisk er der angivet en "standard", "catch-all" eller "fall back" -websted, der vil give svar på alle anmodninger, der ikke udtrykkeligt angiver en vært.

Denne standardwebsted kan være sin egen uafhængige hjemmeside( ofte viser en fejlmeddelelse), eller det kan være en af ​​de andre websteder på webserveren afhængigt af webserverens præferencer.

Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Tjek den fulde diskussionstråd her.