A webszerverek csak egy webhelyet tartanak?
Amikor elkezdi megtanulni, hogy a tartománynevek, az IP-címek, a webkiszolgálók és a weboldalak hogyan illeszkednek és működnek együtt, néha kissé zavaró vagy elsöprő. Hogy alakul ki, hogy ilyen simán működjön? A mai SuperUser Q&A postai válaszok egy furcsa olvasó kérdéseire.
A mai Kérdések és válaszok munkamenet a Jóvagyon - a Stack Exchange alosztályának, a közösség által vezérelt Q&A webhelyek csoportjának köszönhetően..
Photo jóvoltából Rosmarie Voegtli (Flickr).
A kérdés
A SuperUser olvasó user3407319 tudni akarja, hogy a webszerverek csak egy webhelyet tartanak-e:
A DNS-ről és a domainnév IP-címével összekapcsolva a webkiszolgáló IP-címével egy webhelyet tárolnak, ez azt jelenti, hogy minden egyes webszerver csak egy weboldalt képes tárolni? Ha a webkiszolgálók egynél több webhelyet tartanak fenn, akkor hogyan oldódik meg minden olyan megoldás, hogy problémamentesen hozzáférhessek a kívánt webhelyhez, vagy összekeverhessek?
A webkiszolgálók csak egy webhelyet tartanak, vagy többet tartanak?
A válasz
A SuperUser közreműködő, Bobnak a választ kapja:
Alapvetően a böngésző tartalmazza a HTTP-kérelemben szereplő domain nevet, így a webszerver tudja, hogy melyik tartományt kérték, és ennek megfelelően válaszolhat.
HTTP-kérések
Íme, hogyan történik a tipikus HTTP-kérés:
1. A felhasználó megad egy URL-t http: // host: port / path formában.
2. A böngésző kivonja az URL gazdagép (tartomány) részét, és egy IP-címre fordítja (ha szükséges) a névfeloldás néven ismert folyamatban. Ez a fordítás DNS-en keresztül fordulhat elő, de nem kell (például a helyi operátorok fájlja a közös operációs rendszereken, megkerülve a DNS-t).
3. A böngésző megnyitja a TCP-kapcsolatot a megadott porthoz, vagy alapértelmezés szerint a 80-as portot az adott IP-címen.
4. A böngésző HTTP kérést küld. HTTP / 1.1 esetén ez így néz ki:
A gazdagép fejléce szabványos és szükséges a HTTP / 1.1-ben. A HTTP / 1.0 specifikációban nem volt megadva, de egyes kiszolgálók mindenesetre támogatják.
Innen a webkiszolgálónak több információja van, amelyekkel eldöntheti, hogy mi a válasz. Ne feledje, hogy egy webszerver több IP-címhez köthető.
- A kért IP-cím a TCP-aljzatból (az ügyfél IP-címe is elérhető, de ezt ritkán használják, és néha blokkolás / szűrés)
- A kért port a TCP aljzatból
- A keresett gazdanév, amelyet a böngésző a HTTP-kérésben a gazdagép fejlécben megadott
- A kért út
- Egyéb fejlécek (cookie-k stb.)
Amint úgy tűnik, hogy észrevette, a leggyakoribb megosztott tárhely-beállítás ezekben a napokban több webhelyet helyez el egyetlen IP-címre: portkombináció, így csak a gazdagép megkülönbözteti a webhelyeket.
Ez az Apache-land névalapú virtuális gazda néven ismert, míg a Nginx a Server Blocks kiszolgálóneveket nevezi, az IIS pedig a virtuális kiszolgálót részesíti előnyben..
Mi van a HTTPS-rel?
A HTTPS egy kicsit más. Minden megegyezik a TCP-kapcsolat megteremtésével, de ezt követően egy titkosított TLS-alagutat kell létrehozni. A cél az, hogy ne szivárogjon el semmilyen információ a kérésről.
Annak érdekében, hogy ellenőrizze, hogy a webkiszolgáló valóban rendelkezik-e a tartománygal, a webkiszolgálónak egy megbízható harmadik fél által aláírt tanúsítványt kell küldenie. A böngésző ezt követően összehasonlítja ezt a tanúsítványt a kért domainrel.
Ez problémát jelent. Hogyan tudja a webkiszolgáló, hogy melyik gazda / webhely tanúsítványt kell küldeni, ha ezt meg kell tennie a HTTP-kérelem fogadása előtt?
Hagyományosan ezt úgy oldották meg, hogy egy speciális IP-címet (vagy portot) kaptak minden HTTPS-t igénylő webhelyre. Nyilvánvaló, hogy ez problematikus lett, mivel az IPv4-címek elfogynak.
Írja be az SNI (Server Name Indication) elemet. A böngésző a TLS-tárgyalások során most átadja a hosztnevet, így a webkiszolgálónak ez az információ elég korai ahhoz, hogy elküldje a megfelelő tanúsítványt. A webkiszolgáló oldalán a konfiguráció nagyon hasonló a HTTP virtuális gazdagépek konfigurálásához.
A hátránya, hogy a gazdagép neve most titkosított szövegként kerül átadásra, és lényegében kiszivárgott információ. Ezt általában elfogadható kompromisszumnak tekintik, bár a gazdanév megítélése általában egy DNS-lekérdezésben történik.
Mi a teendő, ha csak IP-címet kér a webhelyről?
Mi a webszerver, ha nem tudja, hogy melyik konkrét gazdagépt kért, függ a webkiszolgáló implementációjától és konfigurációjától. Általában van egy „alapértelmezett”, „fogási minden” vagy „visszaesés” webhely, amely válaszokat ad minden olyan kérésre, amely nem határozza meg kifejezetten a hosztot.
Ez az alapértelmezett webhely lehet a saját független webhelye (gyakran hibaüzenetet mutat), vagy a webkiszolgáló bármely más webhelye lehet, attól függően, hogy a webszerver adminisztrációja milyen beállításokkal rendelkezik..
Van valami, amit hozzá kell adni a magyarázathoz? Kikapcsolja a megjegyzéseket. Szeretne további válaszokat olvasni más tech-savvy Stack Exchange felhasználóktól? Nézze meg a teljes beszélgetés szálát itt.