Nimi- ja IP-pohjaisten virtuaalipalvelinten (palvelinlohkojen) määrittäminen NGINX:n avulla


Suhteellisen lyhyessä ajassa sen kehittämisestä ja saatavuudesta (hieman yli 10 vuotta) Nginx on kokenut jatkuvan ja tasaisen kasvun verkkopalvelimien joukossa korkean suorituskyvyn ja vähäisen muistin käytön vuoksi.

Koska Nginx on ilmainen ja avoimen lähdekoodin ohjelmisto, tuhannet verkkopalvelinjärjestelmänvalvojat ympäri maailmaa ovat ottaneet sen käyttöön, ei vain Linux- ja *nix-palvelimissa, vaan myös Microsoft Windowsissa.

Älä missaa: Apache-nimi- ja IP-pohjainen virtuaalinen hosting

Niille meistä, jotka ovat tottuneet Apacheen, Nginxillä voi olla melko jyrkkä oppimiskäyrä (ainakin minun tapauksessani), mutta se kannattaa, kun olet perustanut parin. sivustoista ja ala nähdä liikenne- ja resurssien käyttötilastot.

Tässä artikkelissa selitämme, kuinka Nginxin avulla määritetään nimipohjainen ja ip-pohjainen virtuaalinen hosting CentOS/RHEL:ssä. 7 palvelimet ja Debian 8 ja johdannaiset, alkaen Ubuntu 15.04:stä ja sen oheistuotteista.

Tämän artikkelin testausskenaariomme on seuraava:

  1. Käyttöjärjestelmä: Debian 8 Jessie -palvelin [IP 192.168.0.25]
  2. Yhdyskäytävä: reititin [IP 192.168.0.1]
  3. Web-palvelin: Nginx 1.6.2-5
  4. Dummy Domains: www.tecmintlovesnginx.com ja www.nginxmeanspower.com.

Nginx-verkkopalvelimen asentaminen

Jos et ole jo tehnyt niin, asenna Nginx ennen kuin jatkat. Jos tarvitset apua aloittamiseen, nopea nginx-haku tällä sivustolla palauttaa useita artikkeleita tästä aiheesta. Napsauta tämän sivun yläreunassa olevaa suurennuslasikuvaketta ja hae avainsanalla nginx. Jos et tiedä kuinka etsiä artikkeleita tältä sivustolta, älä huoli, olemme lisänneet linkkejä nginx-artikkeleihin, käy vain läpi ja asenna se vastaavien Linux-jakelujesi mukaisesti.

  1. Asenna ja käännä Nginx lähteistä RHEL/CentOS 7:ssä
  2. Asenna Nginx Web Server Debian 8:aan
  3. Asenna Nginx MariaDB:n ja PHP/PHP-FPM:n kanssa Fedora 23:een
  4. Asenna Nginx Web Server Ubuntu 15.10 -palvelimeen/työpöytään
  5. Salasanasuojaus Nginx-verkkosivustohakemistot

Valmistaudu sitten jatkamaan tämän opetusohjelman lopulla.

Nimipohjaisten virtuaalipalvelinten luominen Nginxissä

Kuten olen varma, että tiedät jo, virtuaalinen isäntä on verkkosivusto, jota Nginx palvelee yhdessä pilvi-VPS:ssä tai fyysisessä palvelimessa. Nginx-dokumenteista löydät sen sijaan termin "palvelinlohkot", mutta ne ovat periaatteessa sama asia, jota kutsutaan eri nimillä.

Ensimmäinen vaihe virtuaalisten isäntien määrittämisessä on luoda yksi tai useampi palvelinlohko (tässä tapauksessa luomme kaksi, yksi kullekin valeverkkotunnukselle) päämääritystiedostoon (/etc/nginx/nginx.conf ). ) tai sisällä /etc/nginx/sites-available.

Vaikka tämän hakemiston määritystiedostojen nimet (sites-available) voidaan asettaa haluamaksesi, on hyvä idea käyttää verkkotunnusten nimiä, ja lisäksi päätimme lisätä .conf-tunniste osoittaa, että nämä ovat asetustiedostoja.

Nämä palvelinlohkot voivat olla suhteellisen monimutkaisia, mutta perusmuodossaan ne koostuvat seuraavasta sisällöstä:

Osoitteessa /etc/nginx/sites-available/tecmintlovesnginx.com.conf:

server {  
    listen       80;  
    server_name  tecmintlovesnginx.com www.tecmintlovesnginx.com;
    access_log  /var/www/logs/tecmintlovesnginx.access.log;  
    error_log  /var/www/logs/tecmintlovesnginx.error.log error; 
        root   /var/www/tecmintlovesnginx.com/public_html;  
        index  index.html index.htm;  
}

Osoitteessa /etc/nginx/sites-available/nginxmeanspower.com.conf:

server {  
    listen       80;  
    server_name  nginxmeanspower.com www.nginxmeanspower.com;
    access_log  /var/www/logs/nginxmeanspower.access.log;  
    error_log  /var/www/logs/nginxmeanspower.error.log error;
    root   /var/www/nginxmeanspower.com/public_html;  
    index  index.html index.htm;  
}

Voit käyttää yllä olevia lohkoja virtuaalisten isäntien asennuksen aloittamiseen tai voit luoda tiedostot perusrungolla osoitteesta /etc/nginx/sites-available/default (Debian >) tai /etc/nginx/nginx.conf.default (CentOS).

Kun olet kopioinut, muuta heidän käyttöoikeuksiaan ja omistajuustaan:

chmod 660  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chmod 660  /etc/nginx/sites-available/nginxmeanspower.com.conf

Debian ja johdannaiset

chgrp www-data  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp www-data  /etc/nginx/sites-available/nginxmeanspower.com.conf

CentOS ja RHEL

chgrp nginx  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp nginx  /etc/nginx/sites-available/nginxmeanspower.com.conf

Kun olet valmis, poista mallitiedosto tai nimeä se uudelleen joksikin muuksi sekaannusten ja ristiriitojen välttämiseksi.

Huomaa, että sinun on myös luotava lokien hakemisto (/var/www/logs) ja annettava Nginx-käyttäjä (nginx tai www-data) sen mukaan, käytätkö CentOS:ää vai Debiania) luku- ja kirjoitusoikeudet sen yli:

mkdir /var/www/logs
chmod -R 660 /var/www/logs
chgrp <nginx user> /var/www/logs

Virtuaalipalvelimet on nyt otettava käyttöön luomalla symbolilinkki tähän tiedostoon sivustoja tukevaan hakemistoon:

ln -s /etc/nginx/sites-available/tecmintlovesnginx.com.conf /etc/nginx/sites-enabled/tecmintlovesnginx.com.conf
ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.conf

Luo seuraavaksi näyte html-tiedosto nimeltä index.html kohtaan /var/www//public_html kullekin virtuaaliselle isännälle (korvaa tarpeen mukaan). Muokkaa seuraavaa koodia tarpeen mukaan:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Tecmint loves Nginx</title>
  </head>
  <body>
  <h1>Tecmint loves Nginx!</h1>
  </body>
</html>

Testaa lopuksi Nginx-kokoonpano ja käynnistä verkkopalvelin. Jos määrityksissä on virheitä, sinua pyydetään korjaamaan ne:

nginx -t && systemctl start nginx

ja lisää seuraavat merkinnät paikallisen koneen /etc/hosts-tiedostoosi perusnimenratkaisustrategiana:

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

Käynnistä sitten verkkoselain ja siirry yllä lueteltuihin URL-osoitteisiin:

Lisää virtuaalisia isäntiä Nginxiin toistamalla yllä kuvatut vaiheet niin monta kertaa kuin tarvitaan.

IP-pohjaiset virtuaalipalvelimet Nginxissä

Toisin kuin nimipohjaiset virtuaalipalvelimet, joissa kaikki isännät ovat käytettävissä saman IP-osoitteen kautta, IP-pohjaiset virtuaaliset isännät vaativat eri IP:portin yhdistelmä jokaista.

Tämän ansiosta verkkopalvelin voi palauttaa eri sivustoja IP-osoitteen ja portin mukaan, jossa pyyntö vastaanotetaan. Koska nimettyjen virtuaalisten isäntien avulla voimme jakaa IP-osoitteen ja portin, ne ovat yleiskäyttöisten verkkopalvelimien standardi, ja niiden tulisi olla valinta, ellei asennettu Nginx-versio tue palvelimen nimen ilmaisua. (SNI), joko siksi, että se on TODELLA vanhentunut versio, tai koska se on käännetty ilman –with-http_ssl_module-käännösvaihtoehtoa.

Jos,

nginx -V

ei palauta alla olevia korostettuja vaihtoehtoja:

sinun on päivitettävä Nginx-versiosi tai käännettävä se uudelleen alkuperäisen asennustavan mukaan. Nginxin kokoamiseksi seuraa alla olevaa artikkelia:

  1. Asenna ja käännä Nginx lähteistä RHEL/CentOS 7:ssä

Olettaen, että olemme kunnossa, meidän on huomioitava, että toinen IP-pohjaisten virtuaalipalvelinten edellytys on erillisten IP-osoitteiden saatavuus – joko määrittämällä ne erillisiin verkkoliitäntöihin tai käyttämällä virtuaalisia IP-osoitteet (tunnetaan myös nimellä IP-alias).

Suorita IP-alias Debianissa (olettaen, että käytät eth0a), muokkaa /etc/network/interfaces seuraavasti:

Debian ja johdannaiset

auto eth0:1
iface eth0:1 inet static
        address 192.168.0.25
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
auto eth0:2
iface eth0:2 inet static
        address 192.168.0.26
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

Yllä olevassa esimerkissä luomme kaksi virtuaalista verkkokorttia seuraavista: eth0: eth0:1 (192.168.0.25) ja eth0:2 (192.168.0.26).

CentOS ja RHEL

Nimeä CentOS:ssä /etc/sysconfig/network-scripts/ifcfg-enp0s3 muotoon ifcfg-enp0s3:1 ja tee kopio muodossa ifcfg-enp0s3:2 . ja muuta sitten vain seuraavia rivejä vastaavasti:

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

ja

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

Kun olet valmis, käynnistä verkkopalvelu uudelleen:

systemctl restart networking

Tee seuraavaksi seuraavat muutokset tässä artikkelissa aiemmin määritettyihin palvelinlohkoihin:

Osoitteessa /etc/nginx/sites-available/tecmintlovesnginx.com.conf:

listen 192.168.0.25:80

Osoitteessa /etc/nginx/sites-available/nginxmeanspower.com.conf:

listen 192.168.0.26:80

Lopuksi käynnistä Nginx uudelleen, jotta muutokset tulevat voimaan.

systemctl restart nginx

äläkä unohda päivittää paikallista /etc/hosts:ta vastaavasti:

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Näin ollen jokainen portissa 80 osoitteeseen 192.168.0.25 ja 192.168.0.26 tehty pyyntö palauttaa osoitteen tecmintlovesnginx.com ja nginxmeanspower.com:

Kuten yllä olevista kuvista näet, sinulla on nyt kaksi IP-pohjaista virtuaalipalvelinta, jotka käyttävät palvelimesi ainoaa verkkokorttia kahdella eri IP-aliaksella.

Yhteenveto

Tässä opetusohjelmassa olemme selittäneet, kuinka voit määrittää sekä nimipohjaiset että IP-pohjaiset virtuaalipalvelimet Nginxissä. Vaikka haluat todennäköisesti käyttää ensimmäistä vaihtoehtoa, on tärkeää tietää, että toinen vaihtoehto on edelleen olemassa, jos tarvitset sitä – varmista vain, että teet tämän päätöksen harkittuasi tässä oppaassa esitettyjä tosiasioita.

Lisäksi voit halutessasi merkitä Nginx-dokumentit kirjanmerkkeihin, koska niihin kannattaa viitata usein luodessasi palvelinlohkoja (siellä se on - puhumme nyt Nginx-kielellä) ja määrittäessäsi niitä. Et usko kaikkia vaihtoehtoja, jotka ovat käytettävissä tämän erinomaisen verkkopalvelimen määrittämiseksi ja virittämiseksi.

Kuten aina, älä epäröi lähettää meille sähköpostia alla olevalla lomakkeella, jos sinulla on kysyttävää tai kommentteja tästä artikkelista. Odotamme kuulevamme sinusta, ja palautteesi tästä oppaasta on erittäin tervetullutta.