Onko Web-palvelimilla vain yksi sivusto?
Kun aloitat oppimisen, miten verkkotunnukset, IP-osoitteet, verkkopalvelimet ja sivustot sopivat ja toimivat yhdessä, se voi olla joskus hieman hämmentävää tai ylivoimainen. Miten se kaikki toimii niin sujuvasti? Tämän päivän SuperUser Q&A -postissa on vastaukset utelias lukijan kysymyksiin.
Nykypäivän Kysymys- ja vastaus -istunto tulee meille suotuisasti SuperUserin - Stack Exchange -alueen, yhteisöpohjaisen Q & A-sivustojen ryhmittymän - kautta..
Kuva: Rosmarie Voegtli (Flickr).
Kysymys
SuperUser-lukija user3407319 haluaa tietää, onko Web-palvelimilla vain yksi verkkosivusto:
Perustuen siihen, mitä ymmärrän DNS: stä ja verkkotunnuksen yhdistämisestä verkkopalvelimen IP-osoitteeseen, sivusto tallennetaan, tarkoittavatko jokainen web-palvelin vain yhtä verkkosivustoa? Jos verkkopalvelimissa on useampi kuin yksi sivusto, niin miten kaikki ratkaistaan, jotta voin käyttää sivustoa, jota haluan, ilman ongelmia tai sekoita yrityksiä?
Onko verkkopalvelimilla vain yksi verkkosivusto vai pidetäänkö ne enemmän?
Vastaus
SuperUserin avustaja Bobilla on vastaus meille:
Pohjimmiltaan selain sisältää HTTP-pyynnön verkkotunnuksen, jotta verkkopalvelin tietää, mikä verkkotunnus on pyydetty ja voi vastata vastaavasti.
HTTP-pyynnöt
Tässä on tyypillinen HTTP-pyyntösi:
1. Käyttäjä antaa URL-osoitteen muodossa http: // isäntä: portti / polku.
2. Selain purkaa URL-osoitteen isäntäosan (verkkotunnuksen) ja muuntaa sen IP-osoitteeksi (tarvittaessa) prosessin, joka tunnetaan nimellä nimiresoluutio. Tämä käännös voi tapahtua DNS: n kautta, mutta sen ei tarvitse (esimerkiksi paikallisten isäntätiedostojen yhteinen käyttöjärjestelmä ohittaa DNS: n).
3. Selain avaa TCP-yhteyden määritetylle portille tai oletusarvoisesti kyseisen IP-osoitteen porttiin 80.
4. Selain lähettää HTTP-pyynnön. HTTP / 1.1: lle näyttää siltä:
Isäntäotsikko on vakio ja sitä tarvitaan HTTP / 1.1. Sitä ei määritelty HTTP / 1.0-määrityksessä, mutta jotkut palvelimet tukevat sitä silti.
Täältä verkkopalvelimessa on useita tietoja, joita se voi käyttää päättääkseen, millainen vastaus pitäisi olla. Huomaa, että yksittäinen web-palvelin voi olla sidottu useisiin IP-osoitteisiin.
- Pyydetty IP-osoite TCP-liitännästä (asiakkaan IP-osoite on myös saatavilla, mutta tätä käytetään harvoin, ja joskus estetään / suodatetaan)
- Pyydetty portti TCP-liitännästä
- Pyydetty isäntänimi, sellaisena kuin selain määrittää isäntäotsikon HTTP-pyynnössä
- Pyydetty polku
- Muut otsikot (evästeet jne.)
Kuten näette huomanneen, yleisimpiä jaettuja hosting-asetuksia asetetaan näinä päivinä useille sivustoille yhdelle IP-osoitteelle: portin yhdistelmä, jolloin vain isäntä erottaa verkkosivustot.
Tätä kutsutaan nimellä Apache-landin nimipohjainen virtuaalinen isäntä, kun taas Nginx kutsuu niitä palvelimen nimiksi palvelinlohkoissa, ja IIS mieluummin Virtual Server.
Entä HTTPS?
HTTPS on hieman erilainen. Kaikki on identtinen TCP-yhteyden muodostamiseen asti, mutta sen jälkeen on luotava salattu TLS-tunneli. Tavoitteena ei ole vuotaa mitään pyyntöä koskevia tietoja.
Varmistaakseen, että verkkopalvelin omistaa tämän verkkotunnuksen, Web-palvelimen on lähetettävä luotettavan kolmannen osapuolen allekirjoittama varmenne. Selain vertailee tämän sertifikaatin pyydetyn verkkotunnuksen kanssa.
Tämä on ongelma. Miten verkkopalvelin tietää, mikä isäntä / verkkosivuston varmenne lähetetään, jos sen on tehtävä tämä ennen HTTP-pyynnön vastaanottamista?
Perinteisesti tämä oli ratkaistu omistamalla IP-osoite (tai portti) jokaiselle verkkosivustolle, joka vaatii HTTPS: ää. On ilmeistä, että tämä on tullut ongelmalliseksi, kun IPv4-osoitteet loppuvat.
Syötä SNI (Palvelimen nimi). Selain siirtää nyt isäntänimen TLS-neuvottelujen aikana, joten web-palvelimella on nämä tiedot riittävän ajoissa oikean varmenteen lähettämiseksi. Web-palvelimen puolella kokoonpano on hyvin samankaltainen kuin HTTP-virtuaalinen isännät on määritetty.
Haittapuoli on isäntänimi siirretään nyt tavallisena tekstinä ennen salausta, ja se on olennaisesti vuotanut tietoa. Tätä pidetään yleensä hyväksyttävänä kompromissina, vaikka isäntänimen huomioon ottaminen normaalisti paljastuu DNS-kyselyssä.
Mitä jos pyydät verkkosivustoa vain IP-osoitteella?
Mitä web-palvelin tekee, kun se ei tiedä, mikä tietty palvelin pyydetään riippuu verkkopalvelimen toteutuksesta ja kokoonpanosta. Tyypillisesti on määritetty "oletus", "catch-all" tai "fall back" -sivusto, joka antaa vastauksia kaikkiin pyyntöihin, joissa ei nimenomaisesti määritellä isäntää.
Tämä oletussivusto voi olla oma itsenäinen sivusto (usein näyttää virheilmoituksen), tai se voi olla mikä tahansa muu web-palvelimen sivusto Web-palvelimen järjestelmänvalinnan mukaan.
Onko jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta tech-savvy Stack Exchange -käyttäjiltä? Tutustu koko keskusteluketjuun täällä.