Úvodná » ako » Do webových serverov držia len jeden web každý?

    Do webových serverov držia len jeden web každý?

    Keď sa prvýkrát začnete učíte, ako sa všetky doménové mená, adresy IP, webové servery a webové stránky hodia a pracujú spoločne, môže to byť občas mätúce alebo zdrvujúce. Ako je všetko nastavené tak, aby fungovalo tak hladko? Dnešný príspevok SuperUser Q & A má odpovede na otázky zvedavého čitateľa.

    Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, zoskupenia webových stránok typu Q & A.

    Foto s láskavým dovolením Rosmarie Voegtli (Flickr).

    Otázka

    Používateľ čítačky SuperUser3407319 chce vedieť, či webové servery obsahujú iba jednu webovú stránku:

    Na základe toho, čo chápem DNS a prepojenie názvu domény s adresou IP webového servera, je webová stránka uložená, znamená to, že každý webový server môže obsahovať iba jednu webovú stránku? Ak webové servery obsahujú viac ako jednu webovú stránku, ako sa to všetko vyrieši, aby som mohol bez problémov vstúpiť na webovú stránku?

    Webové servery obsahujú iba jednu webovú stránku alebo majú viac informácií?

    Odpoveď

    Príspevok SuperUser Bob má pre nás odpoveď:

    V zásade prehliadač obsahuje názov domény v žiadosti HTTP, takže webový server vie, ktorá doména bola požiadaná a môže odpovedať zodpovedajúcim spôsobom.

    Žiadosti HTTP

    Tu je typ vášho typického HTTP požiadavky:

    1. Používateľ poskytuje adresu URL vo forme http: // host: port / path.

    2. Prehliadač extrahuje časť webovej adresy hostiteľa (doménu) a preloží ho do adresy IP (ak je to potrebné) v procese známe ako rozlíšenie mena. Tento preklad môže prebiehať prostredníctvom DNS, ale nemusí to (napríklad lokálny hostiteľský súbor na bežných operačných systémoch obchádza DNS).

    3. Prehliadač otvorí pripojenie TCP k určenému portu alebo predvolene na port 80 na danej adrese IP.

    4. Prehliadač pošle žiadosť HTTP. Pre HTTP / 1.1 to vyzerá takto:

    Hlavička hostiteľa je štandardná a vyžaduje sa v protokole HTTP / 1.1. V špecifikácii HTTP / 1.0 nebola špecifikovaná, ale niektoré servery ju podporujú.

    Odtiaľ má webový server niekoľko informácií, ktoré môže použiť na rozhodnutie o tom, akú odpoveď má byť. Upozorňujeme, že je možné, aby bol jeden webový server viazaný na viacero adries IP.

    • Požadovaná adresa IP zo zásuvky TCP (adresa IP klienta je tiež k dispozícii, ale zriedka sa používa a niekedy aj na blokovanie / filtrovanie)
    • Požadovaný port zo zásuvky TCP
    • Požadované meno hostiteľa, špecifikované v hlavičke hostiteľa prehliadačom v žiadosti HTTP
    • Požadovaná cesta
    • Akékoľvek iné hlavičky (súbory cookie atď.)

    Zdá sa, že ste si všimli, že najčastejšie nastavené zdieľané nastavenie hostingu v týchto dňoch kladie viacero webových stránok na jednu adresu IP: kombinácia portov, takže len hostiteľ rozlišuje medzi webovými stránkami.

    Toto je známe ako virtuálny hostiteľ založený na názvoch v krajine Apache, zatiaľ čo Nginx ich nazýva Server Names in Server Blocks a IIS preferuje Virtual Server.

    Čo o HTTPS?

    HTTPS je trochu iný. Všetko je totožné s vytvorením spojenia TCP, ale potom musí byť vytvorený šifrovaný tunel TLS. Cieľom je neprístupnosť informácií o žiadosti.

    S cieľom overiť, či webový server skutočne vlastní túto doménu, webový server musí odoslať certifikát podpísaný dôveryhodnou treťou stranou. Prehliadač potom porovná tento certifikát s požadovanou doménou.

    To predstavuje problém. Ako webový server vie, ktorý certifikát hostiteľa / webového servera má odoslať, ak to musí urobiť pred prijatím žiadosti HTTP?

    Tradične sa to riešilo tým, že pre každú webovú lokalitu, ktorá vyžaduje protokol HTTPS, má vyhradená IP adresa (alebo port). Je zrejmé, že to sa stalo problematické, pretože sme prekonali adresy IPv4.

    Zadajte SNI (označenie názvu servera). Prehliadač teraz prechádza cez názov hostiteľa počas vyjednávania TLS, takže webový server má tieto informácie dostatočne skoro na to, aby mohol odoslať správny certifikát. Na strane webového servera je konfigurácia veľmi podobná konfigurácii virtuálnych hostiteľov HTTP.

    Nevýhodou je, že názov hostiteľa je teraz odovzdaný ako obyčajný text pred šifrovaním a je v podstate uniknutými informáciami. Toto sa zvyčajne považuje za prijateľný kompromis, aj keď sa domnieva, že názov hostiteľa je normálne vystavený v dopyte DNS.

    Čo keď požadujete webovú lokalitu len podľa IP adresy?

    Čo robí webový server, keď nevie, ktorý špecifický hostiteľ požadujete, závisí od implementácie a konfigurácie webového servera. Typicky existuje špecifikovaná webová stránka "predvolená", "catch-all" alebo "späť", ktorá poskytne odpovede na všetky požiadavky, ktoré explicitne neurčujú hostiteľa.

    Táto predvolená webová stránka môže byť jej vlastnou nezávislou webovou lokalitou (často sa zobrazuje chybové hlásenie), alebo to môže byť niektorá z ďalších webových stránok na webovom serveri v závislosti od preferencií administrátora webového servera.


    Máte niečo doplniť vysvetlenie? Znie to v komentároch. Chcete sa dozvedieť viac odpovedí od iných používateľov technickej úrovne Stack Exchange? Pozrite sa na celý diskusný príspevok tu.