nl.phhsnews.com


nl.phhsnews.com / Hebben webservers slechts één website?

Hebben webservers slechts één website?


Wanneer u voor het eerst leert hoe domeinnamen, IP-adressen, webservers en websites allemaal in elkaar passen en samenwerken, kan het een beetje verwarrend zijn of soms overweldigend. Hoe is alles ingesteld om zo soepel te werken? De SuperUser Q & A-post van vandaag biedt de antwoorden op de vragen van een nieuwsgierige lezer. De vraag- en antwoordsessie van vandaag komt tot ons dankzij SuperUser - een onderdeel van Stack Exchange, een community-driven groep van Q & A-websites.

Foto's met dank aan Rosmarie Voegtli (Flickr).

De vraag

SuperUser-lezer user3407319 wil weten of webservers maar één website hebben:

Gebaseerd op wat ik begrijp over DNS en een domeinnaam koppelen aan het IP-adres van de webserver waarop een website is opgeslagen, betekent dit dat elke webserver maar één website kan bevatten? Als webservers meerdere websites hebben, hoe kan dit dan allemaal worden opgelost zodat ik zonder problemen of verwisselingen de website kan openen?

Hebben webservers maar één website, of houden ze meer vast? ?

Het antwoord

SuperUser-bijdrager Bob heeft het antwoord voor ons:

Kort gezegd bevat de browser de domeinnaam in het HTTP-verzoek, zodat de webserver weet welk domein is aangevraagd en waarop kan worden gereageerd.

HTTP-aanvragen

Hier ziet u hoe uw typische HTTP-aanvraag gebeurt:

1.

De gebruiker geeft een URL op in de vorm // host: poort / pad. 2.

browser extraheert het host (domein) deel van de URL en vertaalt deze in een IP-adres (indien nodig) in een proces dat bekend staat als naamomzetting. Deze vertaling kan via DNS gebeuren, maar dat hoeft niet (het lokale hostbestand op gewone besturingssystemen omzeilt bijvoorbeeld DNS). 3.

De browser opent een TCP-verbinding met de opgegeven poort of standaardinstellingen naar poort 80 op dat IP-adres. 4.

De browser verzendt een HTTP-verzoek. Voor HTTP / 1.1 ziet het er als volgt uit: De host-header is standaard en vereist in HTTP / 1.1. Het was niet gespecificeerd in de HTTP / 1.0 spec, maar sommige servers ondersteunen het toch.

Vanaf hier heeft de webserver verschillende stukjes informatie die hij kan gebruiken om te beslissen wat de reactie zou moeten zijn. Merk op dat het mogelijk is dat een enkele webserver aan meerdere IP-adressen is gebonden.

Het gevraagde IP-adres, van de TCP-socket (het IP-adres van de client is ook beschikbaar, maar dit wordt zelden gebruikt, en soms voor blokkeren / filteren)

  • De aangevraagde poort, vanuit de TCP-socket
  • De aangevraagde hostnaam, zoals gespecificeerd in de hostheader door de browser in het HTTP-verzoek
  • Het gevraagde pad
  • Andere headers (cookies , enz.)
  • Zoals je waarschijnlijk gemerkt hebt, plaatst de meest gebruikte shared hosting-opstelling tegenwoordig meerdere websites op één IP-adres: poortcombinatie, waardoor alleen de host tussen websites kan onderscheiden.

Dit staat bekend als een op naam gebaseerde virtuele host in Apache-land, terwijl Nginx ze Servernamen noemt in serverblokken en IIS de voorkeur geeft aan Virtual Server.

Hoe zit het met HTTPS?

HTTPS is een beetje anders. Alles is identiek tot aan de totstandkoming van de TCP-verbinding, maar daarna moet een gecodeerde TLS-tunnel tot stand worden gebracht. Het doel is om geen informatie over het verzoek te lekken.

Om te verifiëren dat de webserver daadwerkelijk eigenaar is van dit domein, moet de webserver een certificaat verzenden dat is ondertekend door een vertrouwde derde partij. De browser zal dit certificaat vervolgens vergelijken met het domein dat het heeft aangevraagd.

Dit levert een probleem op. Hoe weet de webserver welk certificaat van een host / website moet worden verzonden als dit moet voordat de HTTP-aanvraag wordt ontvangen?

Traditioneel is dit opgelost door een speciaal IP-adres (of poort) te hebben voor elke website waarvoor HTTPS is vereist. Vanzelfsprekend is dit problematisch geworden omdat we geen IPv4-adressen meer hebben.

Voer SNI in (servernaamindicatie). De browser geeft nu de hostnaam door tijdens de TLS-onderhandelingen, dus de webserver heeft deze informatie vroeg genoeg om het juiste certificaat te verzenden. Aan de zijde van de webserver lijkt de configuratie sterk op hoe HTTP virtuele hosts zijn geconfigureerd.

Het nadeel is dat de hostnaam nu wordt doorgegeven als platte tekst vóór versleuteling, en in wezen is gelekte informatie. Dit wordt meestal als een acceptabele afweging beschouwd, aangezien de hostnaam normaal toch in een DNS-query wordt weergegeven.

Wat als u een website via alleen IP-adres aanvraagt?

Wat de webserver doet als deze niet weet welke specifieke host u heeft aangevraagd, hangt af van de implementatie en configuratie van de webserver. Doorgaans is er een opgegeven "standaard", "catch-all" of "terugval" -website die antwoorden biedt op alle verzoeken die niet expliciet een host specificeren.

Deze standaardwebsite kan zijn eigen onafhankelijke website zijn ( vaak met een foutmelding), of het kan een van de andere websites op de webserver zijn, afhankelijk van de voorkeuren van de beheerder van de webserver.

Heeft u iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk hier de volledige discussiethread



Hoe je je PlayStation 4 of Xbox One sneller kunt maken (door een SSD toe te voegen)

Hoe je je PlayStation 4 of Xbox One sneller kunt maken (door een SSD toe te voegen)

Sony en Microsoft hebben ervoor gekozen om de PlayStation 4- en Xbox One-consoles niet te verzenden met solid-state schijven. Ze gingen met langzamere mechanische schijven om de kosten laag te houden, maar je kunt de laadtijden voor je console-spellen versnellen door een SSD-station toe te voegen aan je PS4 of Xbox One.

(how-to)

De netwerkinstellingen van je iOS-apparaat opnieuw instellen en problemen met de verbinding oplossen

De netwerkinstellingen van je iOS-apparaat opnieuw instellen en problemen met de verbinding oplossen

Als je wifi- of mobiele problemen ondervindt die je met andere methoden gewoon niet hebt kunnen oplossen, iOS geeft je de mogelijkheid om al je netwerkinstellingen te resetten. Hiermee wordt zowat alles teruggezet naar de fabrieksinstellingen, zodat je helemaal opnieuw kunt beginnen. Voordat je erin gaat duiken, is het belangrijk om te weten wat het resetten van je netwerkinstellingen eigenlijk is.

(how-to)