Kako postaviti virtualne hostove temeljene na imenu i IP-u (blokove poslužitelja) s NGINX-om


U relativno kratkom vremenskom razdoblju otkako je razvijen i stavljen na raspolaganje (nešto više od 10 godina), Nginx je doživio održiv i stabilan rast među web poslužiteljima zbog svojih visokih performansi i male upotrebe memorije.

Budući da je Nginx besplatan softver otvorenog koda, prihvatile su ga tisuće administratora web poslužitelja diljem svijeta, ne samo u Linux i *nix poslužiteljima, već i u Microsoft Windowsima.

Ne propustite: Virtualni hosting temeljen na Apache imenu i IP-u

Za one od nas koji smo najviše navikli na Apache, Nginx možda ima prilično strmu krivulju učenja (barem je to bio moj slučaj), ali svakako se isplati nakon što postavite par stranica i počnite vidjeti statistiku prometa i korištenja resursa.

U ovom ćemo članku objasniti kako koristiti Nginx za postavljanje virtualnog hostinga temeljenog na imenu i ipa u CentOS/RHEL 7 poslužitelji i Debian 8 i derivati, počevši od Ubuntu 15.04 i njegovih izdanaka.

Naš scenarij testiranja za ovaj članak je sljedeći:

  1. Operativni sustav: Debian 8 Jessie poslužitelj [IP 192.168.0.25]
  2. Gateway: Usmjerivač [IP 192.168.0.1]
  3. Web poslužitelj: Nginx 1.6.2-5
  4. Lažne domene: www.tecmintlovesnginx.com i www.nginxmeanspower.com.

Instaliranje Nginx web poslužitelja

Ako to već niste učinili, instalirajte Nginx prije nego što nastavite dalje. Ako trebate pomoć za početak, brza pretraga za nginx na ovoj stranici vratit će nekoliko članaka o ovoj temi. Kliknite na ikonu povećala na vrhu ove stranice i potražite ključnu riječ nginx. Ako ne znate kako pretraživati članke na ovoj stranici, ne brinite, ovdje smo dodali poveznice na članke o nginxu, samo ih prođite i instalirajte prema svojim distribucijama Linuxa.

  1. Instalirajte i kompajlirajte Nginx iz izvora u RHEL/CentOS 7
  2. Instalirajte Nginx web poslužitelj na Debian 8
  3. Instalirajte Nginx s MariaDB i PHP/PHP-FPM na Fedora 23
  4. Instalirajte Nginx web poslužitelj na Ubuntu 15.10 poslužitelj/stolno računalo
  5. Zaštitite lozinkom Nginx imenike web stranica

Zatim se pripremite za nastavak s ostatkom ovog vodiča.

Stvaranje virtualnih hostova temeljenih na nazivima u Nginxu

Kao što sam siguran da već znate, virtualni host je web stranica koju poslužuje Nginx u jednom oblaku VPS ili fizičkom poslužitelju. Međutim, u Nginx dokumentima pronaći ćete izraz "blokovi poslužitelja" umjesto toga, ali to je u osnovi ista stvar koja se zove različitim imenima.

Prvi korak za postavljanje virtualnih hostova je stvaranje jednog ili više blokova poslužitelja (u našem slučaju stvorit ćemo dva, po jedan za svaku lažnu domenu) u glavnoj konfiguracijskoj datoteci (/etc/nginx/nginx.conf) ili unutar /etc/nginx/sites-available.

Iako se naziv konfiguracijskih datoteka u ovom direktoriju (sites-available) može postaviti na bilo koji, dobra je ideja koristiti nazive domena, a osim toga odlučili smo dodati .conf proširenje koje označava da su to konfiguracijske datoteke.

Ovi poslužiteljski blokovi mogu biti relativno složeni, ali u svom osnovnom obliku sastoje se od sljedećeg sadržaja:

U /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;  
}

U /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;  
}

Možete koristiti gornje blokove za početak postavljanja svojih virtualnih hostova ili možete stvoriti datoteke s osnovnim kosturom iz /etc/nginx/sites-available/default (Debian ) ili /etc/nginx/nginx.conf.default (CentOS).

Nakon kopiranja promijenite njihova dopuštenja i vlasništvo:

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

Debian i derivati

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

CentOS i RHEL

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

Kada završite, trebali biste izbrisati oglednu datoteku ili je preimenovati u nešto drugo kako biste izbjegli zabunu ili sukobe.

Imajte na umu da ćete također morati stvoriti direktorij za zapisnike (/var/www/logs) i dati Nginx korisniku (nginx ili www-data , ovisno o tome koristite li CentOS ili Debian) dopuštenja za čitanje i pisanje preko njega:

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

Virtualni hostovi sada moraju biti omogućeni stvaranjem simboličke veze na ovu datoteku u direktoriju s omogućenim web-mjestima:

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

Zatim stvorite oglednu html datoteku pod nazivom index.html unutar /var/www//public_html za svaki od virtualnih hostova (zamijenite prema potrebi). Prema potrebi izmijenite sljedeći kôd:

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

Na kraju testirajte Nginx konfiguraciju i pokrenite web poslužitelj. Ako postoje pogreške u konfiguraciji, od vas će se tražiti da ih ispravite:

nginx -t && systemctl start nginx

i dodajte sljedeće unose vašoj /etc/hosts datoteci na vašem lokalnom računalu kao osnovnu strategiju razlučivanja imena:

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

Zatim pokrenite web-preglednik i idite na gore navedene URL-ove:

Za dodavanje više virtualnih hostova u Nginx, samo ponovite gore navedene korake onoliko puta koliko je potrebno.

Virtualni hostovi temeljeni na IP-u u Nginxu

Za razliku od virtualnih hostova temeljenih na imenu gdje su svi hostovi dostupni putem iste IP adrese, virtualni hostovi temeljeni na IP-u zahtijevaju drugačiji IP:port kombinacija svaka.

To omogućuje web poslužitelju da vrati različite stranice ovisno o IP adresi i portu na kojem je primljen zahtjev. Budući da nam imenovani virtualni hostovi daju prednost dijeljenja IP adrese i priključka, oni su standard za web poslužitelje opće namjene i trebali bi biti izbor osim ako vaša instalirana verzija Nginxa ne podržava indikaciju naziva poslužitelja (SNI), ili zato što je STVARNO zastarjela verzija ili zato što je kompajlirana bez –with-http_ssl_module opcije kompajliranja.

Ako,

nginx -V

ne vraća označene opcije u nastavku:

morat ćete ažurirati svoju verziju Nginxa ili je ponovno kompajlirati, ovisno o izvornoj metodi instalacije. Za kompajliranje Nginxa slijedite članak u nastavku:

  1. Instalirajte i kompajlirajte Nginx iz izvora u RHEL/CentOS 7

Pod pretpostavkom da smo spremni, moramo napomenuti da je još jedan preduvjet za IP-temeljene virtualne hostove dostupnost zasebnih IP-ova – bilo njihovim dodjeljivanjem različitim mrežnim sučeljima, ili korištenjem virtualnih IP adrese (također poznate kao IP aliasing).

Za izvođenje IP aliasa u Debianu (pod pretpostavkom da koristite eth0), uredite /etc/network/interfaces na sljedeći način:

Debian i derivati

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

U gornjem primjeru stvaramo dva virtualna NIC-a od eth0: eth0:1 (192.168.0.25) i eth0:2 (192.168.0.26).

CentOS i RHEL

U CentOS-u preimenujte /etc/sysconfig/network-scripts/ifcfg-enp0s3 u ifcfg-enp0s3:1 i napravite kopiju kao ifcfg-enp0s3:2, a zatim samo promijenite sljedeće retke:

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

i

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

Kada završite, ponovno pokrenite mrežnu uslugu:

systemctl restart networking

Zatim izvršite sljedeće promjene u blokovima poslužitelja prethodno definiranim u ovom članku:

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

listen 192.168.0.25:80

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

listen 192.168.0.26:80

Na kraju ponovno pokrenite Nginx kako bi promjene stupile na snagu.

systemctl restart nginx

i ne zaboravite ažurirati svoj lokalni /etc/hosts u skladu s tim:

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Stoga će svaki zahtjev upućen prema 192.168.0.25 i 192.168.0.26 na portu 80 vratiti tecmintlovesnginx.com i nginxmeanspower.com, odnosno:

Kao što možete vidjeti na gornjim slikama, sada imate dva virtualna hosta temeljena na IP-u koji koriste jedini NIC na vašem poslužitelju s dva različita IP aliasa.

Sažetak

U ovom smo vodiču objasnili kako postaviti virtualna računala na temelju imena i na temelju IP-a u Nginxu. Iako ćete vjerojatno htjeti upotrijebiti prvu opciju, važno je znati da je druga opcija još uvijek tu ako vam je potrebna - samo se pobrinite da ovu odluku donesete nakon razmatranja činjenica navedenih u ovom vodiču.

Osim toga, možda ćete htjeti označiti Nginx dokumente jer je vrijedno i dobro često ih pregledavati dok stvarate blokove poslužitelja (eto ga – sada govorimo na Nginx jeziku) i konfiguriramo ih. Nećete vjerovati svim opcijama koje su dostupne za konfiguriranje i podešavanje ovog izvanrednog web poslužitelja.

Kao i uvijek, ne ustručavajte se javiti nam se putem donjeg obrasca ako imate pitanja ili komentara o ovom članku. Radujemo se vašem odgovoru, a vaše povratne informacije o ovom vodiču su dobrodošle.