17Aug

Da li web poslužitelji drže samo jednu web stranicu?

Kada počnete učiti kako se imena domena, IP adrese, web poslužitelji i web stranice sve uklapaju i rade zajedno, s vremena na vrijeme može biti malo zbunjujuće ili neodoljivo. Kako je sve postavljeno da tako glatko radi? Današnji SuperUser Q & A post ima odgovore na pitanja čudnih čitatelja.

Današnje pitanje &Sesija odgovora nam dolazi zahvaljujući SuperUseru - podjele Stack Exchange, grupiranjem zajednice Q & A web stranica.

Fotografija ljubaznošću Rosmarie Voegtli( Flickr).

Pitanje

SuperUser čitač user3407319 želi znati ako web poslužitelji imaju samo jednu web stranicu svaki:

Na temelju onoga što ja razumijem o DNS-u i povezivanju naziva domene s IP adresom web poslužitelja gdje se web stranica pohranjuje,web poslužitelj može imati samo jednu web stranicu? Ako web poslužitelji imaju više od jedne web stranice, kako se sve riješi tako da mogu pristupiti web stranici koju želim bez ikakvih problema ili miješanja?

Da li web poslužitelji imaju samo jednu web stranicu ili imaju više?

Odgovor

SuperUser suradnik Bob ima odgovor za nas:

Uglavnom, preglednik sadrži naziv domene u HTTP zahtjevu tako da web poslužitelj zna koja je domena zatražena i može odgovoriti u skladu s tim.

HTTP zahtjevi

Evo kako se događa tipični HTTP zahtjev:

1. Korisnik daje URL u obliku http: // host: port / path.

2. Preglednik ekstrahira dio domaćina( domene) URL-a i prevodi ga u IP adresu( ako je potrebno) u procesu poznatoj kao razlučivanje imena. Ovaj prijevod može se izvršiti putem DNS-a, ali ne mora( na primjer, lokalna datoteka hostova na uobičajenim operacijskim sustavima zaobilazi DNS).

3. Preglednik otvara TCP vezu s navedenim priključkom ili se postavlja na priključak 80 na toj IP adresi.

4. Preglednik šalje HTTP zahtjev. Za HTTP / 1.1, izgleda ovako:

Glavno je zaglavlje standardno i potrebno u HTTP / 1.1.Nije određeno u HTTP / 1.0 spec., Ali neki poslužitelji to podržavaju ionako.

Odavde web poslužitelj ima nekoliko dijelova informacija koje može koristiti za odlučivanje o tome što bi trebao biti odgovor. Imajte na umu da je moguće da jedan web poslužitelj bude vezan za više IP adresa.

  • Tražena IP adresa, iz TCP socket( IP adresa klijenta je također dostupna, ali to se rijetko koristi, a ponekad i za blokiranje / filtriranje)
  • Tražena luka, iz TCP utičnice
  • Traženi naziv računala, kaonavedene u glavnom hostu preglednika u HTTP zahtjevu
  • Tražena putanja
  • Bilo koja druga zaglavlja( kolačići i sl.)

Kao što izgleda da ste primijetili, najčešći zajednički hosting postavljanje ovih dana stavlja više web stranica na jednu IP adresu: kombinacija luka, ostavljajući samo domaćinu razliku između web stranica.

To je poznato kao virtualni host u Apache-zemlji, a Nginx ih naziva imenima poslužitelja u blokovima poslužitelja, a IIS preferira virtualni poslužitelj.

Što o HTTPS-u?

HTTPS je malo drugačiji. Sve je identično do uspostavljanja TCP veze, ali nakon toga mora se uspostaviti šifrirani TLS tunel. Cilj je da ne procuri bilo kakve informacije o zahtjevu.

Kako bi se uvjerilo da web poslužitelj zapravo posjeduje tu domenu, web poslužitelj mora poslati certifikat potpisao pouzdanu treću stranu. Preglednik će zatim usporediti ovaj certifikat s domenom koju je zatražio.

To predstavlja problem. Kako web-poslužitelj zna koja je potvrda host / web site za slanje ako to mora učiniti prije nego što je primljen HTTP zahtjev?

Tradicionalno, ovo je riješeno posvećenom IP adresom( ili portom) za svaku web stranicu koja zahtijeva HTTPS.Očito je to postalo problematično jer istječu IPv4 adrese.

Unesite SNI( indikator naziva poslužitelja).Preglednik sada prolazi naziv glavnog računala tijekom pregovora s TLS-om, tako da web poslužitelj ima te podatke dovoljno rano da pošalje ispravni certifikat. Na strani web poslužitelja konfiguracija je vrlo slična načinu konfiguriranja HTTP virtualnih hostova.

Nedostatak je ime domaćina koji je sada prošao kao običan tekst prije enkripcije i bitno je procurio informacije. To se obično smatra prihvatljivim skraćivanjem, iako s obzirom na ime domaćina normalno je izloženo DNS upitu ionako.

Što ako tražiš web stranicu samo po IP adresi?

Što web poslužitelj radi kada ne zna koji specifičan domaćin koji zatraži ovisi o implementaciji i konfiguraciji web poslužitelja. Uobičajeno je navedena web-lokacija "zadana", "catch-all" ili "fall back" koja će pružiti odgovore na sve zahtjeve koji izričito ne navode host.

Ova zadana web stranica može biti vlastita neovisna web stranica( često prikazuje poruku o pogrešci) ili bi mogla biti bilo koja od ostalih web stranica na web poslužitelju, ovisno o postavkama administratora web poslužitelja.

Imate li što dodati objašnjenju? Zvuči u komentarima.Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.