Domovská » jak » Do webových serverů drží pouze jednu webovou stránku?

    Do webových serverů drží pouze jednu webovou stránku?

    Když se poprvé začnete učit, jak se všechny doménové jména, adresy IP, webové servery a webové stránky hodí a pracují společně, může to být občas mátlo nebo ohromující. Jak je vše nastaveno tak, aby fungovalo tak hladce? Dnešní příspěvek SuperUser Q & A má odpovědi na zvědavé čtenářské otázky.

    Dnešní zasedání Otázky a odpovědi nás přichází s laskavým svolením SuperUser - podřízené rozdělení Stack Exchange, které je založeno na komunitě prostřednictvím skupin webových stránek.

    Foto s laskavým svolením Rosmarie Voegtli (Flickr).

    Otázka

    Uživatel čtečky SuperUser user3407319 chce vědět, zda webové servery obsahují pouze jednu webovou stránku:

    Na základě toho, co chápu o DNS a propojení názvu domény s adresou IP webového serveru, je webová stránka uložena, znamená to, že každý webový server může obsahovat pouze jednu webovou stránku? Pokud webové servery drží více než jednu webovou stránku, jak se to všechno vyřeší, abych měl přístup na webovou stránku, kterou chci bez problémů nebo záměny?

    Webové servery obsahují pouze jednu webovou stránku nebo drží více?

    Odpověď

    Příspěvek SuperUser Bob má pro nás odpověď:

    Prohlížeč v zásadě obsahuje název domény v požadavku HTTP, takže webový server ví, která doména byla požadována a může odpovídajícím způsobem reagovat.

    Požadavky HTTP

    Zde je váš typický požadavek HTTP:

    1. Uživatel poskytuje adresu URL ve tvaru http: // host: port / path.

    2. Prohlížeč extrahuje hostitelskou (doménu) část URL a přeloží ji do IP adresy (je-li to nutné) v procesu známém jako rozlišení názvu. Tento překlad může nastat prostřednictvím služby DNS, ale nemusí (například místní hostitelský soubor na společných operačních systémech obchází DNS).

    3. Prohlížeč otevře připojení TCP k zadanému portu nebo výchozí port 80 na této adrese IP.

    4. Prohlížeč odešle požadavek HTTP. Pro HTTP / 1.1 vypadá takto:

    Hlavička hostitele je standardní a vyžaduje se v protokolu HTTP / 1.1. V šabloně HTTP / 1.0 nebyla specifikována, ale některé servery ji podporují.

    Odtud má webový server několik informací, které může rozhodnout, jaká by měla být odpověď. Všimněte si, že je možné, aby byl jeden webový server vázán na více adres IP.

    • Požadovaná adresa IP ze soketu TCP (adresa IP klienta je také k dispozici, ale toto je zřídka používáno a někdy také pro blokování / filtrování)
    • Požadovaný port ze zásuvky TCP
    • Požadované jméno hostitele, jak je specifikováno v hlavičce hostitele prohlížečem v požadavku HTTP
    • Požadovaná cesta
    • Jakékoli další záhlaví (soubory cookie atd.)

    Jak se zdá, že jste si všimli, nejběžnější nastavení sdílených hostingů v dnešní době přináší více webů na jednu adresu IP: kombinaci portů, takže pouze hostitel rozlišuje mezi webovými stránkami.

    Toto je známé jako virtuální hostitel založený na názvu v Apache-zemi, zatímco Nginx nazývá jména serverů v serverových blocích a služba IIS preferuje virtuální server.

    Co HTTPS?

    HTTPS je trochu jiná. Všechno je totožné s vytvořením připojení TCP, ale poté musí být vytvořen šifrovaný tunel TLS. Cílem je nevyskytnout žádné informace o žádosti.

    Chcete-li ověřit, zda webový server skutečně vlastní tuto doménu, musí webový server odeslat certifikát podepsaný důvěryhodnou třetí stranou. Prohlížeč potom porovná tento certifikát s požadovanou doménou.

    To představuje problém. Jak webový server zjistí, který certifikát hostitele / webového serveru má odeslat, pokud to potřebuje před přijetím požadavku HTTP?

    Tradičně to bylo vyřešeno tím, že pro každou webovou stránku vyžadující protokol HTTPS máte vyhrazenou adresu IP (nebo port). Je zřejmé, že se to stalo problematickým, jelikož se vyskytují adresy IPv4.

    Zadejte název SNI (název serveru). Prohlížeč nyní předává název hostitele během vyjednávání TLS, takže webový server má tyto informace dostatečně brzy k odeslání správného certifikátu. Na straně webového serveru je konfigurace velmi podobná konfiguraci virtuálních hostitelů HTTP.

    Nevýhodou je, že název hostitele je nyní předkládán jako prostý text před šifrováním a je v podstatě unikl informacemi. Toto je obvykle považováno za přijatelný kompromis, ačkoliv se domněnka o názvu hostitele obvykle vyskytuje v dotazu DNS.

    Co když požadujete webovou stránku pouze podle adresy IP?

    Co webový server dělá, když neví, který konkrétní server požadujete, závisí na implementaci a konfiguraci webového serveru. Obvykle je zadána specifikovaná stránka "default", "catch-all" nebo "fall back", která poskytne odpovědi na všechny požadavky, které explicitně neurčují hostitele.

    Tato výchozí webová stránka může být její vlastní nezávislá webová stránka (často se zobrazuje chybová zpráva), nebo by mohla být některá z dalších webových stránek na webovém serveru v závislosti na preferencích administrátora webového serveru.


    Musíte něco přidat k vysvětlení? Vyjměte v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.