• Digitaaliset tarvikkeet
  • Palvelin
  • Digitaalinen elämä
  • Tietosuojakäytäntö
  • Ota meihin yhteyttä
  1. Home
  2. Article
  3. Palvele useita verkkotunnuksia käyttämällä virtuaalisia isäntiä

Palvele useita verkkotunnuksia käyttämällä virtuaalisia isäntiä

Rsdaa 27/12/2021 1010

Palvele useita verkkotunnuksia käyttämällä virtuaalisia isäntiä

Viimeksi päivitetty: 21.9.2016

Kirjoittaja: Rackspace Support

Useimmat ihmiset palvelevat pilvipalvelimellaan useampaa kuin yhtä verkkotunnusta. Varaatpa eri toimialueita tai saman toimialueen eri aliverkkotunnuksia, menettely on sama. Tässä artikkelissa kuvataan, kuinka luodaan virtuaalisia isäntiä palvelemaan useita toimialueita ja miten Apachen nimipohjaisten virtuaaliisäntäkokoonpanojen ongelmat ratkaistaan.

Virtuaaliisäntien luominen useille verkkotunnuksille

Kun selain lähettää palvelimesi IP-osoitteeseen pyynnön, jossa pyydetään verkkotunnuksesi (esimerkiksi https://esimerkkiverkkotunnus.com) sisältöä, verkkosi palvelin tarjoaa HTTP-esityksen sivustostasi. Jos palvelin palvelee vain yhtä verkkosivustoa, se palvelee /var/www/html-hakemistossasi olevaa HTML-koodia alkaen indeksistä.html. Mutta ainutlaatuinen palvelin jokaiselle verkkosivustolle, jota haluat palvella, on kallista ja resurssien tehotonta käyttöä.

Nimipohjaisten virtuaalipalvelinten avulla voit tarjota sisältöä useille verkkosivustoille yhdeltä palvelimelta.

Yksi ​​ensimmäisistä riveistä missä tahansa virtuaalisen isännän määritystiedostossa määrittää verkkotunnuksen nimen, joka liittyy virtuaaliseen isäntään. Seuraavassa on esimerkki virtuaaliisäntämäärityksestä Apachelle, joka palvelee domain1.com:ia:

ServerNamedomain1.comServerAlias ​​www.domain1.com

Seuraava esimerkki näyttää virtuaalisen isäntäkokoonpanon NGINX:lle:

palvelin {palvelimen_nimiwww.domain1.com;kirjoita uudelleen ^/(.\*) https://domain1.com/$1 pysyvä;

Jokainen kokoonpano alkaa hieman eri tavalla, mutta sama periaate pätee: kyseinen virtuaalinen isäntä vastaa kyselyihin domain1.com ja www.domain1.com.

Jos haluat tarjota erilaista sisältöä eri verkkotunnuksille, lisää toinen virtuaalinen isäntä.

Sinulla on esimerkiksi aliverkkotunnus blogi.domain1.com, joka palvelee blogia.

Luo ensin public_html-kansioosi kansio, jossa on blogiin liittyvät tiedostot (esimerkiksi WordPress-asennus).

Sitten luot virtuaalisen isännän, jonka palvelimen_nimi tai palvelimennimi on määritetty nimellä blog.domain1.com, ja määrität sen osoittamaan julkisen_html-kansiossasi olevia blogitiedostoja ja kansioita.

Lisätietoja virtuaalisännistä saat Apache-dokumentista Name-base Virtual Hosts

Vianetsintä

Tässä osiossa kerrotaan, kuinka Apache-nimipohjaisten virtuaaliisäntäkokoonpanojen ongelmat voidaan ratkaista. Se tarjoaa hyödyllisiä komentoja virtuaalisen isännän kokoonpanon testaamiseen, kuvaa niiden tulosten tulkitsemista ja kuvailee, kuinka ne auttavat korjaamaan yleisiä virtuaalisen isännän kokoonpanoongelmia.

Käynnistä Apache uudelleen

Ennen kuin voit diagnosoida ongelman, varmista, että olet käynnistänyt Apachen uudelleen sen jälkeen, kun viimeksi teit muutoksia Apache-määritystiedostoihisi:

Käytä Red Hat -jakeluissa:

sudo /usr/sbin/httpd -k restart

Debian-jakeluissa käytä:

sudo /usr/sbin/apache2 -k restart

Jos Apache antaa varoituksen tai virheilmoituksen, merkitse se muistiin myöhempää käyttöä varten. Seuraava vaihe on saada tietoja virtuaalisen isännän määrityksistä.

Hanki määritysraportti

Suorita -S-komento verkkopalvelimella tarkistaaksesi virtuaalisen isännän määritykset

Käytä Red Hatista johdetuissa jakeluissa:

sudo /usr/sbin/httpd -S

Debian-pohjaisissa jakeluissa käytä:

sudo /usr/sbin/apache2 -S

Tuloste näyttää virtuaalisen isännän asetukset asetustiedostosta. Seuraava esimerkki näyttää kokoonpanoraportin palvelimelle, joka on määritetty kahdella nimipohjaisella virtuaalipalvelimella: vh1.example.com ja vh2.example.com. Numeroidut rivit selitetään esimerkin mukaisesti.

VirtualHost configuration:wildcard NameVirtualHosts ja \_default\_ palvelimet:[1] \*:80on NameVirtualHost[2] oletuspalvelin vh1.example.com (/etc/httpd/conf/custom/virtualhost.conf:3)[3] portti 80 namevhost vh1.example.com (/etc/httpd/conf/custom/virtualhost.conf:3)[4] portti 80 namevhost vh2.example.com (/etc/httpd/conf/custom/virtualhost.conf:8 )[5] Syntaksi OK

Rivi [1] ilmoittaa, että verkkopalvelin kuuntelee oletusporttia 80 kaikkia IP-osoitteita, joita Apache kuuntelee, ja että nimipohjainen virtuaalinen hosting on päällä. * on yleismerkki, joka määrittää kaikki IP-osoitteet.

Rivi [2] ilmoittaa oletusarvoisen virtuaalisen isännän, jonka verkkopalvelin ServerAlias ​​antaa kaikille pyynnöille, joille ei pyydetä erityistä isäntänimeä. Se näyttää myös polun asetustiedostoon ja rivinumeron, jossa tämä kokoonpano on asetettu.

Rivi [3] ilmoittaa ensimmäisen löydetyn virtuaalisen isäntäkokoonpanon portin ja nimen, tiedoston, jossa se on määritetty, ja rivinumeron, josta sen määritykset alkavat.

Rivi [4] ilmoittaa portin ja toisen löydetyn näennäisisäntäkokoonpanon nimen, tiedoston, jossa se on määritetty, ja rivinumeron, josta sen määritykset alkavat.

Rivi [5] ilmoittaa, onko määrityssyntaksi oikea, vaikka se ei välttämättä tarkoita, että sivustosi toimii

Seuraava tulos on tuotettu seuraavalla virtuaalisen isäntätiedoston määrityksellä:

NameVirtualHost \*:80 Ottaa käyttöön nimipohjaisen isäntäresoluution ja sitoo virtuaalipalvelimen IP-osoitteisiin ja portteihin kuten yllä [1]. \* on yleismerkki, joka määrittää kaikki IP-osoitteet. Konfiguroi ensimmäisen ja oletusarvoisen virtuaalisen isännän [2] & [3] edellä. Se on oletusarvo, koska se on ensimmäinen virtuaalinen isäntä, jonka IP ja portti vastaavat sitä edeltävässä NameVirtualHost-direktiivissä olevia.ServerName vh1.example.comDocumentRoot /var/www/vhosts/vh1 Konfiguroi toisen virtuaalisen isännän yllä olevassa kohdassa [4].PalvelimenNimi vh2.example.comDocumentRoot /var/www/vhosts/vh2

Nyt kun olet nähnyt virtuaalisen isännän peruskokoonpanon ulkoasun ja kuinka se liittyy Apachen omaan määritysraporttiin, voit käyttää näitä raportteja yleisimpiin määritysongelmiin. . Seuraavissa osissa kuvataan joitakin näistä ongelmista ja annetaan ohjeita niiden korjaamiseen.

Isäntiä ei ole määritetty nimipohjaisiksi virtuaalisänniksi

Jos httpd -S on käynnissä, se ilmoittaa seuraavan varoituksen:

[Ke 18. toukokuuta 15:24:51 2011] [varoita] \_default\_ VirtualHost päällekkäisyys portissa 80, ensimmäisellä on etusijaVirtualHost-kokoonpano: jokerimerkki NameVirtualHosts ja \_default\_ palvelimet:\*:80 vh1.example. etc/httpd/conf/custom/virtualhost.conf:3)\*:80 vh2.example.com (/etc/httpd/conf/custom/virtualhost.conf:8)Syntaksi OK

Tämä varoitus osoittaa, että useita virtuaalisia isännät yrittävät käyttää samaa "socketia" ilman, että niitä on määritetty nimipohjaisiksi virtuaalisänniksi. Tämä virhe ilmenee usein, kun Apache-virtuaalipalvelimet luodaan ensimmäisen kerran, koska oletusarvoinen NameVirtualHost-direktiivi on kommentoitu hash-symbolilla. Tämä symboli kehottaa Apachea jättämään direktiivin huomiotta.

Korjaa tämä ongelma Apachen oletusmääritystiedostossa varmistamalla, että NameVirtualHost *:80 -direktiiviä ei ole kommentoitu. Jos käytät minimaalista Apache-määritystiedostoa, lisää NameVirtualHost *:80 -ohje yksittäisten virtuaaliisäntäkokoonpanojen yläpuolelle.

Seuraava esimerkki näyttää kommentoidun ohjeen, joka aiheutti virheen:

#NameVirtualHost \*:80PalvelimenNimi vh1.example.comDocumentRoot /var/www/vhosts/vh1ServerName vh2.example.comDocumentRoot /var/www/vhosts/vh2Elementti puuttuu VirtualHost-direktiivistä seuraava httpd-virhesanoma

S:

Syntaksivirhe /etc/httpd/conf/custom/virtualhost.conf rivillä 8: direktiivi vaatii lisäargumentteja

Tämä viesti tarkoittaa, että virtuaalisen isännän VirtualHost-käskystä puuttuu tarvittava elementti. VirtualHost-direktiivi on jokaisen yksittäisen virtuaalisen isäntäkokoonpanon ensimmäinen rivi. Tässä tapauksessa virhe on määritystiedoston /etc/httpd/conf/custom/virtualhost.conf rivillä 8.

Seuraava on Apache-kokoonpano, joka aiheutti yllä olevan virheen:

NameVirtualHost \*:80ServerName vh1.example.comDocumentRoot /var/www/vhosts/vh1ServerName vh2.example.comDocumentRoot /var/www/vhosts/vh2

Huomaa, että toisessa VirtualHost-direktiivissä ei ole IP-osoitetta tai porttia virheen syy.

Seuraava on korjattu versio edellisestä esimerkistä, johon on lisätty \*:80 virtuaalisen isännän käskyyn. Kuten aina, \* on jokerimerkki, joka määrittää kaikki IP-osoitteet.

NameVirtualHost \*:80PalvelimenNimi vh1.example.comDocumentRoot /var/www/vhosts/vh1ServerName vh2.example.comDocumentRoot /var/www/vhosts/vh2Portin numerot eivät täsmää

Jos käynnissä on httpd -S, on listattu yllä, on NameVirtualHost-rivi:

VirtualHost configuration:wildcard NameVirtualHosts ja \_default\_ servers:\*:800vh2.example.com (/etc/httpd/conf/custom/virtualhost.conf:8)\*:80 on NameVirtualHost-oletuspalvelin vh1.example. /etc/httpd/conf/custom/virtualhost.conf:3)portti 80 namevhost vh1.example.com (/etc/httpd/conf/custom/virtualhost.conf:3)Syntaksi OK

Tässä esimerkissä kokoonpano testi raportoi vh2.example.com-kokoonpanon ennen kuin se raportoi NameVirtualHost-määrityksen. Saatat nähdä tämän virheen, jos VirtualHostin IP-osoite tai portti ei vastaa verkkopalvelimen NameVirtualHost-direktiivin IP-osoitetta tai porttia. Tässä esimerkissä raportti osoittaa, että vh2.example.com käyttää porttia 800 portin 80 sijaan. Portin numero kirjoitettiin väärin, kun vh2.example.com-virtuaaliisännän kuunteluportti määritettiin. Tämän seurauksena Apache käsittelee vh2.example.com-osoitetta erillisenä porttipohjaisena virtuaalipalvelimena.

httpd -S -testikomento ei varoita tästä ongelmasta, koska on sallittua määrittää virtuaaliset isännät käyttämään mitä tahansa porttia, kuten 800, ilman, että ne ovat osa saman palvelimen nimipohjaista virtuaaliisäntäkokoonpanoa.

Jos kohtaat tämän virheen, näet todennäköisesti sisältöä virtuaalisesta oletuspalvelimesta (tässä esimerkissä vh1.example.com), kun yrität tarkastella sivustoa verkkoselaimellasi.

Jotta voit yhdistää edellisen lähdön määritystiedostoon, on seuraava virtuaalisen isännän kokoonpano, joka loi tämän virheen:

NameVirtualHost \*:80ServerName vh1.example.comDocumentRoot /var/www/vhosts/vh1ServerName vh2.example.comDocumentRoot /var/www/vhosts/vh2Dokumentin juurihakemistoa ei ole olemassa

Jos seuraava http -:S -virhe on käynnissä

Varoitus: DocumentRoot [/etc/httpd/var/www/vhosts/vh2] ei ole olemassa

Tämä virhe osoittaa, että virtuaalipalvelimen vh2.example.com verkkosivustotiedostot sisältäväksi määritettyä hakemistoa ei ole olemassa tai että Apache ei voi käyttää sitä. Samanlaisia ​​virheitä voi esiintyä missä tahansa virtuaaliisäntäkokoonpanossa määritetyissä tiedostopoluissa, kuten poluissa virtuaalisen isännän lokitiedostoihin.

Korjaa tämä virhe varmistamalla, että olet luonut hakemiston. Jos loit sen, varmista, että DocumentRoot-direktiivissä ei ole virheitä. Yleinen virhe on jättää polun alkuviiva (/) pois. Vinoviivan jättäminen pois ohjeistaa Apachea lukemaan polun – tässä tapauksessa DocumentRoot-polun – suhteellisena poluna, toisin sanoen poluna suhteessa Apachen pääkokoonpanon ServerRoot-polkuun.

Seuraava esimerkki näyttää vain yhden tavoista, joilla tämä virhe luodaan. DocumentRoot-direktiivin polku ensimmäisessä virtuaalipalvelimessa alkaa kauttaviivalla, mutta toisessa ei.

Palvelimenjuuri /etc/httpdNameVirtualHost \*:80PalvelimenNimi vh1.example.comDocumentRoot /var/www/vhosts/vh1PalvelimenNimi vh2.example.comDocumentRoot var/www/vhosts/vh2Käyttämällä virtuaalisen isäntäkokoonpanon määritystiedostoja tarkistatpA> ja httpd -S -komento ei ilmoita ongelmia, yritä päästä sivustollesi käyttämällä cURL-osoitetta:

curl -I www.example.com

Tulosteen pitäisi näyttää suunnilleen tältä:

HTTP/1.1 200 OKPäivämäärä: la, 07. toukokuuta 2011 15:09:50 GMTS-palvelin: Apache/2.2.3 (CentOS) Viimeksi muokattu: ma, 25. huhtikuuta 2011 11:07:43 GMTETag: "2c32e-7c3c7c7c3b -Vuoteet: tavua Sisällön pituus: 119 Sisältötyyppi: teksti/html; charset=UTF-8

Ensimmäinen rivi näyttää tilakoodin. Haluat nähdä 200 OK, kuten esimerkissä näkyy. Jos näet tämän, testaa verkkopalvelinta selaimellasi, mutta ota huomioon, että selaimesi saattaa näyttää välimuistissa olevan sivun.

Jos et näe 200 OK, saatat nähdä jonkin seuraavista yleisistä viesteistä:

curl: (6) Isäntää vh1.example.com ei voitu ratkaista

Jos cURL ilmoittaa, että se ei löydä isäntää, varmista, että verkkotunnuksella on A-tietue, joka osoittaa palvelimesi oikeaan IP-osoitteeseen. Voit käyttää kaivaa tähän:

dig vh1.example.com

curl: (7) ei voinut muodostaa yhteyttä isäntään

Varmista, että Apache-määritystiedostosi sisältävät tarvittavat kuuntelukäskyt ja että niitä ei ole kommentoitu. Se vaatii vähintään Listen 80:n.

Toinen tapa varmistaa tämä on tarkistaa virheloki. Oletusvirheloki on osoitteessa /var/log/httpd/error_log Red Hat -järjestelmissä ja /var/log/apache2/error_log Debian-järjestelmissä. Jos Apachen kuuntelua varten ei ole määritetty porttia, viesti ei kuunteluliitäntöjä käytettävissä, sammutus seuraa Apachen yritystä käynnistää uudelleen.

[huomautus] SIGHUP vastaanotettu.Yritetään käynnistää uudelleen, kuunteluliitäntöjä ei ole saatavilla, sammutetaanLokeja ei voida avata

HTTP/1.1 403 Kielletty

Tämä vastaus osoittaa, että oikeudet, jotka antavat Apachelle pääsyn pyytämällesi sivulle, eivät ole oikein. Ehkä hakemiston käyttöoikeudet ovat virheelliset, tai se voi olla sivu itse.

Saatat myös nähdä 403-vastauksen seuraavissa tilanteissa:

- "DocumentRoot" ei sisällä hakemistotiedostoa, jonka nimi on yleensä "index.html" tai "index.php". Huomaa, että tiedoston nimessä on isot ja pienet kirjaimet eroteltu toisistaan. Virtuaalinen isäntä ei sisällä DirectoryIndex-komentoa, joka määrittää oletushakemistotiedoston.

Apache-virhelokit näyttävät yleensä, minkä hakemiston tai tiedoston käyttöoikeudet on asetettu väärin. Yksittäiset virtuaalipalvelimet saattavat kirjoittaa virheitä omiin lokeihinsa, jos ne on määritetty niin, joten tarkista myös nämä lokit.

Älä lannistu kiireisen palvelimen lokitiedostojen datamäärästä. Käytä sen sijaan häntäkomentoa tarkastellaksesi valikoivasti vain lokin kymmenen viimeisintä riviä. Esimerkiksi:

tail /var/log/apache2/error\_log

Näet uudet merkinnät, kun ne lisätään virhelokiin tai mihin tahansa lokiin, samalla kun testaat palvelinta, jos käsket tail-komentoa "seuraamaan" lokia. Esimerkiksi:

tail -f /var/log/httpd/error\_log

Seuraavassa on esimerkkejä yleisistä käyttöoikeuksiin liittyvistä määritysvirheistä, joita voi esiintyä Apachen lokeissa:

Seuraava lokimerkintä osoittaa, että vh2.example.com-tiedoston index.html käyttöoikeudet estävät pääsyn Apachelle.

[error] [client 203.0.113.96] (13)Lupa estetty: pääsy osoitteeseen /index.html estetty

Seuraava lokimerkintä osoittaa, että /var/www/vhosts/vh2-hakemiston käyttöoikeudet estävät Apachen lukupyynnön.

[virhe] [asiakas 203.0.113.96] (13) Lupa estetty: tiedostooikeudet estävät palvelimen pääsyn: /var/www/vhosts/vh2/index.html

Seuraava lokimerkintä osoittaa, että Apachella ei ole suoritus- tai lukuoikeuksia yksi DocumentRootin yllä olevista hakemistoista.

[virhe] [asiakas 203.0.113.96] (13) Lupa estetty: pääsy / estetty

PREV: Client Server Computing - Tutorialspoint

NEXT: Palvelimen virtualisoinnin 10 parasta haittaa

Popular Articles

Hot Articles

Navigation Lists

Back to Top