17Aug

Onko Web-palvelimet vain pitävät yhtä verkkosivustoa kukin?

Kun aloitat oppimisen kuinka verkkotunnukset, IP-osoitteet, web-palvelimet ja sivustot sopivat yhteen ja toimivat yhdessä, se voi olla joskus hämmentävä tai ylivoimainen. Kuinka kaikki on luotu toimimaan niin pehmeästi? Tänään SuperUser Q & A -postilla on vastauksia utelias lukijan kysymyksiin.

Päivän kysymys &Vastausistunto tulee meille kohteliaasti SuperUser-osastoon Stack Exchange, yhteisöllinen ryhmittely Q & A verkkosivuilla.

Photo courtesy of Rosmarie Voegtli( Flickr).

Kysymys

SuperUser-lukija user3407319 haluaa tietää, onko web-palvelimilla vain yksi verkkosivusto kukin:

Sen perusteella, mitä ymmärrän DNS: stä ja verkkotunnuksen liittämisestä web-palvelimen IP-osoitteeseen, verkkosivusto on tallennettu,web-palvelin voi pitää vain yhden verkkosivuston? Jos web-palvelimissa on useampi kuin yksi verkkosivusto, miten se kaikki ratkaistaan ​​niin, että voin käyttää halutulla verkkosivustolla mitään ongelmia tai sekaantua?

Onko web-palvelimissa vain yksi verkkosivusto, vai pitävätkö ne enemmän?

Vastaus

SuperUser-avustaja Bob on meille vastaus:

Pohjimmiltaan selaimessa on verkkotunnus HTTP-pyynnössä, joten verkkopalvelin tietää, minkä verkkotunnuksen pyydetty ja vastaa sen mukaisesti.

HTTP-pyynnöt

Tähän tapaan tapahtuu tyypillinen HTTP-pyyntö:

1. Käyttäjä antaa URL-osoitteen muodossa http: // host: portti / polku.

2. Selaus erottaa URL-osoitteen isäntänä( verkkotunnus) osan ja kääntää sen IP-osoitteeksi( jos tarpeen) prosessissa, joka tunnetaan nimiresoluutioisena. Tämä käännös voi tapahtua DNS: n välityksellä, mutta sen ei tarvitse( esimerkiksi paikallisten isäntätiedostojen yhteiset käyttöjärjestelmät ohittavat DNS: n).

3. Selaus avaa TCP-yhteyden määritettyyn porttiin tai oletusarvoisesti portti 80 kyseiseen IP-osoitteeseen.

4. Selaimessa lähetetään HTTP-pyyntö.HTTP / 1.1: lle tämä näyttää tältä:

Isäntäotsikko on standardi ja vaaditaan HTTP / 1.1: ssä.Sitä ei määritetty HTTP / 1.0 -sovelluksessa, mutta jotkut palvelimet tukevat sitä joka tapauksessa.

Täältä web-palvelimella on useita tietoja, joita se voi käyttää päättääkseen vastauksen. Huomaa, että yksittäisen web-palvelimen on mahdollista sitoa useita IP-osoitteita.

  • Pyydetty IP-osoite TCP-liitännästä( asiakkaan IP-osoite on myös käytettävissä, mutta sitä käytetään harvoin ja joskus estää / suodattaa)
  • Pyydetty portti TCP-liitännästä
  • Pyydetty isäntänimi, kutenHTTP-pyynnön selaimessa määritetty isäntätiedosto
  • Pyydetty polku
  • Kaikki muut otsakkeet( evästeet jne.)

Yleisimpiä jaettuja hosting-asetuksia näillä päivillä laittaa useita verkkosivustoja yhteen IP-osoitteeseen: porttiyhdistelmä, jättäen vain isännän eri sivustojen välille.

Tätä kutsutaan Apache-maan nimipalvelimena, kun taas Nginx kutsuu palvelimen nimet palvelinlohkoiksi ja IIS suosittelee Virtual Serveria.

Mitä tietoja HTTPS: stä?

HTTPS on hieman erilainen. Kaikki on samanlaista TCP-yhteyden muodostamisen jälkeen, mutta sen jälkeen on luotava salattu TLS-tunneli. Tavoitteena ei ole vuotaa tietoja pyynnöstä.

Jotta varmistettaisiin, että verkkopalvelin tosiasiallisesti omistaa tämän verkkotunnuksen, verkkopalvelimen on lähetettävä luotettava kolmannen osapuolen allekirjoittama varmenne. Selaimella verrataan tätä varmennetta sen pyytämän verkkotunnuksen kanssa.

Tämä on ongelma. Miten web-palvelin tietää, mikä isäntä / verkkosivuston todistus lähetetään, jos se on tarpeen ennen HTTP-pyynnön vastaanottamista?

Perinteisesti tämä ratkaistiin omistamalla oma IP-osoite( tai portti) jokaiselle verkkosivustolle, joka vaatii HTTPS: tä.On selvää, että tämä on tullut ongelmalliseksi, kun käytämme IPv4-osoitteita.

Syötä SNI( palvelimen nimen ilmaisu).Selain siirtää isäntänimen TLS-neuvottelujen aikana, joten verkkopalvelimella on nämä tiedot riittävän ajoissa lähettämään oikea todistus. Web-palvelimen puolella kokoonpano on hyvin samanlainen kuin HTTP-virtuaali-isännät on määritetty.

Haittapuoli on isäntänimi ohittanut tekstinä ennen salausta ja on olennaisesti vuotanut tieto. Tätä pidetään yleensä hyväksyttävänä kompromissina, vaikka isäntänimi yleensä paljastuu DNS-kyselyssä.

Mitä jos pyydät verkkosivustoa vain IP-osoitteella?

Mitä web-palvelin tekee, kun se ei tiedä, mikä yksittäinen vastaanottaja pyydät, riippuu verkkopalvelimen toteutuksesta ja kokoonpanosta. Tyypillisesti on määritetty "oletus", "catch-all" tai "fall back" -sivusto, joka antaa vastaukset kaikkiin pyyntöihin, joissa ei nimenomaisesti määritetä isäntäkonetta.

Tämä oletushakemisto voi olla oma itsenäinen verkkosivusto( usein virheilmoitus) tai se voi olla mikä tahansa verkkosivustojen muilla verkkosivustoilla riippuen verkkopalvelimen järjestelmänvalvojan asetuksista.

Onko sinulla jotain lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä?Katso koko keskusteluketju täältä.