Kas veebiserverid hoiavad ainult ühte veebisaiti?
Kui hakkate kõigepealt õppima, kuidas domeeninimed, IP-aadressid, veebiserverid ja veebisaidid kõik sobivad ja töötavad koos, võib see mõnikord veidi segane või ülekaalukas olla. Kuidas see kõik toimib nii sujuvalt? Tänase SuperUser Q&A postitusel on vastused uudishimulikule lugeja küsimustele.
Tänane küsimuste ja vastuste seanss saabub meiega kohtades, kus on SuperUser-Stack Exchange'i alajaotis, kogukondlikult juhitav Q&A veebisaitide rühmitus.
Foto viisakalt Rosmarie Voegtli (Flickr).
Küsimus
SuperUser lugeja user3407319 tahab teada, kas veebiserveritel on ainult üks veebisait:
Tuginedes sellele, mida ma DNS-i kohta aru saan ja domeeninime sidumine veebiserveri IP-aadressiga, salvestatakse veebisait, kas see tähendab, et iga veebiserver võib omada ainult ühte veebisaiti? Kui veebiserveritel on rohkem kui üks veebisait, siis kuidas see kõik lahendatakse, et saaksin juurdepääsu soovitud veebisaidile ilma probleemideta või segamini?
Kas veebiserveritel on ainult üks veebisait või nad omavad rohkem?
Vastus
SuperUser'i toetaja Bobil on meile vastus:
Põhimõtteliselt sisaldab brauser HTTP-taotluses domeeninime, nii et veebiserver teab, millist domeeni küsiti ja saab sellele vastata.
HTTP taotlused
Siin on, kuidas teie tavaline HTTP-päring toimub:
1. Kasutaja annab URL-i kujul http: // host: port / path.
2. Brauser ekstraktib URL-i peremehe (domeeni) osa ja teisendab selle IP-aadressiks (kui vaja) protsessis, mida tuntakse nime resolutsioonina. See tõlge võib toimuda DNS-i kaudu, kuid see ei pea (näiteks kohalike hostide fail ühiste operatsioonisüsteemide puhul mööda DNS-i).
3. Brauser avab määratud pordiga TCP-ühenduse või vaikimisi selle pordi 80.
4. Brauser saadab HTTP-päringu. HTTP / 1.1 puhul näeb see välja selline:
Host header on standardne ja nõutav HTTP / 1.1. HTTP / 1.0 spetsifikatsioonis seda ei täpsustatud, kuid mõned serverid seda siiski toetavad.
Siit on veebiserveril mitu teavet, mida ta saab kasutada selleks, et otsustada, milline peaks olema vastus. Pange tähele, et ühe veebiserveri on võimalik siduda mitme IP-aadressiga.
- Taotletud IP-aadress TCP-pesast (kliendi IP-aadress on samuti saadaval, kuid seda kasutatakse harva ja mõnikord blokeerimiseks / filtreerimiseks)
- Taotletud port TCP pesast
- Taotletud hostinimi, mis on HTTP-päringus brauseri poolt määratud päises
- Taotletud tee
- Muud pealkirjad (küpsised jne)
Nagu te ilmselt olete märganud, paneb nendel päevadel levinuim ühiskasutusega hostimine mitu veebisaiti ühele IP-aadressile: pordi kombinatsioon, jättes ainult veebisaidi eristamiseks veebisaitide vahel.
Seda nimetatakse nimepõhiseks virtuaalserveriks Apache-maal, samas kui Nginx nimetab neid serveri nimedeks serveriplokkides ja IIS eelistab virtuaalserverit.
Mis on HTTPS?
HTTPS on natuke erinev. Kõik on identne TCP-ühenduse loomiseni, kuid pärast seda tuleb luua krüpteeritud TLS-tunnel. Eesmärk on mitte lekkida teavet taotluse kohta.
Selleks, et kontrollida, kas veebiserver tegelikult selle domeeni omab, peab veebiserver saatma usaldusväärse kolmanda isiku poolt allkirjastatud sertifikaadi. Seejärel võrdleb brauser seda sertifikaati taotletud domeeniga.
See kujutab endast probleemi. Kuidas teab veebiserver, milline peremees / veebisaidi sertifikaat saadab, kui see on vajalik enne HTTP-päringu vastuvõtmist?
Traditsiooniliselt lahendati see spetsiaalse IP-aadressi (või pordi) abil iga veebisaidi jaoks, mis vajab HTTPS-i. Ilmselgelt on see muutunud problemaatiliseks, kuna meil on IPv4-aadressid otsa saanud.
Sisestage SNI (serveri nimi). Praegu läbib brauser TLS-läbirääkimiste ajal hostinime, nii et veebiserveril on see teave piisavalt vara, et saata õige sertifikaat. Veebiserveri poolel on konfiguratsioon väga sarnane sellele, kuidas HTTP virtuaalsed hosts on konfigureeritud.
Negatiivne külg on hostinimi nüüd edastatud kui tavaline tekst enne krüpteerimist ja on sisuliselt lekkinud. Seda peetakse tavaliselt aktsepteeritavaks kompromissteks, ehkki hostinime vaatamine on tavaliselt DNS-päringus.
Mis siis, kui Te taotlete veebisaiti ainult IP-aadressiga?
Mida veebiserver teeb, kui ta ei tea, millist konkreetset vastuvõtjat taotlete, sõltub veebiserveri rakendusest ja konfiguratsioonist. Tavaliselt on määratud „vaikimisi“, „kõik-saak” või „tagasipöördumine” veebisait, mis annab vastused kõikidele päringutele, mis ei täpselt määra hostit.
See vaikimisi kasutatav veebisait võib olla oma iseseisev veebisait (sageli kuvatakse veateade) või see võib olla mis tahes muu veebiserveri veebisait sõltuvalt veebiserveri administraatori eelistustest.
Kas teil on midagi lisada selgitusele? Heli on kommentaarides välja lülitatud. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.