AllInfo

Web Servers Slechts Één Website?

Wanneer u voor het eerst beginnen te leren hoe domeinnamen, IP-adressen, web servers en websites in alle passen en samen te werken, het kan een beetje verwarrend of overweldigend. Hoe is het allemaal opgezet om het werk zo soepel? Vandaag de SuperUser Q&A post heeft de antwoorden op een nieuwsgierige lezer vragen.

Vandaag Vraag & Antwoord sessie komt ons hoffelijkheid van SuperUser—een onderverdeling van de Stack Exchange, een community-gedreven groepering van de Q&A-sites.

Foto met dank aan Rosmarie Voegtli (Flickr).

De Vraag

SuperUser reader user3407319 wil weten of web servers slechts één website:

Gebaseerd op wat ik juist over DNS en het koppelen van een domeinnaam aan het IP-adres van de web-server van een website wordt opgeslagen, betekent dat iedere webserver kan alleen een website? Als web servers doen het bezit zijn van meer dan één website, hoe werkt het allemaal opgelost dus dat heb ik toegang tot de website wil ik zonder problemen of mix-ups?

Web servers alleen een website, of hebben ze meer?

Het Antwoord

SuperUser medewerker Bob heeft het antwoord voor ons:

Kortom, de browser bevat de naam van het domein in de HTTP-aanvraag, zodat de webserver weet welke domeinnaam is aangevraagd en kan reageren.

HTTP-Verzoeken

Hier is hoe je typisch HTTP-aanvraag gebeurt:

1. De gebruiker zorgt voor een URL, in de vorm http://host:port/path.

2. De browser haalt de host (domein) een deel van de URL en vertaalt in een IP-adres (indien nodig) in een proces dat bekend staat als naam van de resolutie. Deze vertaling kan plaatsvinden via DNS, maar het hoeft niet zo te zijn (bijvoorbeeld, de lokale hosts-bestand op voorkomende besturingssystemen omzeilt DNS).

3. De browser opent een TCP-verbinding met de opgegeven poort, of gaat standaard naar poort 80 op dat IP-adres.

4. De browser stuurt een HTTP-verzoek. Voor HTTP/1.1, ziet het er zo uit:

De host-header standaard en verplicht op HTTP/1.1. Het was niet zijn gespecificeerd in de HTTP/1.0 specificaties, maar sommige servers ondersteunen het toch.

Vanaf hier, de web server heeft meerdere delen van de informatie die zij kunnen gebruiken om te beslissen wat de reactie zou moeten zijn. Let op: het is mogelijk dat een enkele webserver gebonden te zijn aan meerdere IP-adressen.

  • De gevraagde IP-adres van de TCP-socket (het IP-adres van de client is ook beschikbaar, maar deze wordt zelden gebruikt, en soms voor het blokkeren of filteren)
  • De gevraagde poort van de TCP-socket
  • De gevraagde hostnaam, zoals gespecificeerd in de host-header door de browser in de HTTP-aanvraag
  • De gevraagde pad
  • Andere headers (koekjes, enz.)

Als je lijkt te hebben gemerkt, zijn de meest voorkomende shared hosting setup deze dagen zet meerdere websites op een enkel IP-adres:poort combinatie, zodat alleen de host om onderscheid te maken tussen websites.

Dit staat bekend als een Naam-Gebaseerde Virtuele Host in Apache-land, terwijl Nginx noemt ze Namen van de servers in de Server Blokkeert, en IIS geeft de voorkeur aan een Virtuele Server.

Wat Over HTTPS?

HTTPS is een beetje anders. Alles is identiek tot de oprichting van de TCP-verbinding, maar na dat er een versleutelde TLS-tunnel moet worden vastgesteld. Het doel is om niet lek alle informatie over de aanvraag.

Om te controleren of de web server daadwerkelijk de eigenaar van dit domein, wordt de web server moet u een certificaat is ondertekend door een vertrouwde derde partij. De browser zal dan het vergelijken van deze certificaat met de domein aangevraagd.

Dit levert een probleem op. Hoe werkt de web server weten welke host/website-certificaat te sturen als die het nodig heeft om dit te doen voordat het HTTP-verzoek is ontvangen?

Traditioneel werd dit opgelost door het hebben van een vast IP-adres (of poort) voor elke website waarvoor HTTPS. Het is duidelijk dat dit problematisch is geworden zoals wij het opraken van de IPv4 adressen.

Voer SNI (Server Naam Indicatie). De browser geeft nu de naam van de host tijdens de TLS-onderhandelingen, zodat de web server heeft deze informatie vroeg genoeg voor het verzenden van het juiste certificaat. Op de web server, de configuratie is zeer vergelijkbaar met hoe virtuele hosts worden geconfigureerd.

Het nadeel is de naam van de host is nu voorbij als platte tekst voor encryptie, en is in wezen gelekte informatie. Dit wordt meestal beschouwd als een aanvaardbaar compromis maar gezien de hostnaam is gewoonlijk blootgesteld in een DNS-query toch.

Wat Als Je een Website met een IP-Adres?

Wat de web server wordt niet weten welke specifieke host die u aangevraagd is afhankelijk van de web server implementatie en configuratie. Meestal is er een “standaard”, “catch-all” of “terug te vallen” website opgegeven dat zal antwoorden op alle aanvragen die niet uitdrukkelijk aan te geven dat een host.

Deze standaard website kan zijn eigen onafhankelijke website (vaak met een foutmelding), of het kan een van de andere websites op de web server, afhankelijk van de voorkeuren van de web server admin.

Nog iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van de andere tech-savvy Stack Exchange-gebruikers? Bekijk de volledige bespreking draad hier.

Exit mobile version