17Aug

Har webservere bare ett nettsted hver?

click fraud protection

Når du først begynner å lære hvordan domenenavn, IP-adresser, webservere og nettsteder passer og jobber sammen, kan det til og med være litt forvirrende eller overveldende. Hvordan er det satt opp for å fungere så jevnt? Dagens SuperUser Q & A-innlegg har svar på spørsmål fra en nysgjerrig leser.

Dagens Spørsmål &Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.

Foto courtesy of Rosmarie Voegtli( Flickr).

Spørsmålet

SuperUser-leser user3407319 vil vite om webservere bare har ett nettsted hver:

Basert på hva jeg forstår om DNS og kobling av et domenenavn med IP-adressen til webserveren, lagres et nettsted på, betyr det hverwebserver kan bare holde ett nettsted? Hvis webservere holder mer enn ett nettsted, hvordan blir det alt løst slik at jeg får tilgang til nettstedet jeg vil ha uten problemer eller blandingsoppdateringer?

Har webservere bare ett nettsted hver, eller holder de mer?

instagram viewer

Svaret

SuperUser-bidragsyter Bob har svaret for oss:

I utgangspunktet inneholder nettleseren domenenavnet i HTTP-forespørselen, slik at webserveren vet hvilket domene som ble forespurt og kan svare tilsvarende.

HTTP-forespørsler

Slik utfører du den typiske HTTP-forespørselen:

1. Brukeren gir en URL, i skjemaet http: // vert: port / sti.

2. Nettleseren trekker ut verten( domene) delen av nettadressen og oversetter den til en IP-adresse( om nødvendig) i en prosess kjent som navnoppløsning. Denne oversettelsen kan forekomme via DNS, men det behøver ikke( for eksempel bytter den lokale vertsfilen på vanlige operativsystemer DNS).

3. Nettleseren åpner en TCP-tilkobling til den angitte porten, eller standard til port 80 på den IP-adressen.

4. Nettleseren sender en HTTP-forespørsel. For HTTP / 1.1 ser det slik ut:

Vertsoverskriften er standard og kreves i HTTP / 1.1.Det ble ikke spesifisert i HTTP / 1.0-spesifikasjonen, men noen servere støtter det uansett.

Herfra har webserveren flere opplysninger som den kan bruke til å bestemme hva svaret skal være. Merk at det er mulig for en enkelt webserver å være bundet til flere IP-adresser.

  • Den forespurte IP-adressen, fra TCP-kontakten( klientens IP-adresse er også tilgjengelig, men dette brukes sjelden, og noen ganger for blokkering / filtrering)
  • Den forespurte porten, fra TCP-kontakten
  • Det forespurte vertsnavnet, somangitt i vertsoverskriften av nettleseren i HTTP-forespørselen
  • Den forespurte banen
  • Eventuelle andre overskrifter( informasjonskapsler, etc.)

Som du synes å ha lagt merke til, setter de vanligste delte hostingoppsettene i disse dager flere nettsteder på en enkelt IP-adresse: portkombinasjon, som bare lar verten skille mellom nettsteder.

Dette er kjent som en navnebasert virtuell vert i Apache-land, mens Nginx kaller dem servernavn i serverblokker, og IIS foretrekker virtuell server.

Hva om HTTPS?

HTTPS er litt annerledes. Alt er identisk med etableringen av TCP-tilkoblingen, men etter det må en kryptert TLS-tunnel etableres. Målet er å ikke lekke noen informasjon om forespørselen.

For å verifisere at webserveren faktisk eier dette domenet, må webserveren sende et sertifikat signert av en pålitelig tredjepart. Nettleseren vil da sammenligne dette sertifikatet med det domenet det ba om.

Dette presenterer et problem. Hvordan vet webserveren hvilket verts / nettstedets sertifikat som skal sendes hvis det må gjøres før HTTP-forespørselen mottas?

Tradisjonelt ble dette løst ved å ha en dedikert IP-adresse( eller port) for hvert nettsted som krever HTTPS.Det har åpenbart blitt problematisk da vi løper ut av IPv4-adresser.

Skriv inn SNI( Servernavn Indikasjon).Nettleseren passerer nå vertsnavnet under TLS-forhandlingene, slik at webserveren har denne informasjonen tidlig nok til å sende riktig sertifikat. På webserver siden, er konfigurasjonen svært likt hvordan HTTP virtuelle verter er konfigurert.

Ulempen er at vertsnavnet nå er bestått som vanlig tekst før kryptering, og er i hovedsak lekket informasjon. Dette betraktes vanligvis som en akseptabel avvei, men vurderer at vertsnavnet vanligvis er utsatt for en DNS-spørring uansett.

Hva hvis du bare ber om et nettsted via IP-adresse?

Hva webserveren gjør når den ikke vet hvilken spesifikk vert du forespurt, avhenger av webserverens implementering og konfigurasjon. Vanligvis er det angitt et "standard", "catch-all" eller "fall tilbake" -nettsted som vil gi svar på alle forespørsler som ikke spesifikt angir en vert.

Denne standardwebsiden kan være sin egen uavhengige nettside( ofte viser en feilmelding), eller det kan være noen av de andre nettstedene på webserveren, avhengig av innstillingene til webserveradministratoren.

Har du noe å legge til forklaringen? Lyder av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.