Kako podesiti virtuelne hostove zasnovane na imenu i IP-u (blokove servera) sa NGINX-om
U relativno kratkom vremenskom periodu od kada je razvijen i stavljen na raspolaganje (nešto više od 10 godina), Nginx je doživio neprekidan i stalan rast među web serverima zbog svojih visokih performansi i niske upotrebe memorije.
Pošto je Nginx besplatan softver otvorenog koda, usvojile su ga hiljade administratora web servera širom svijeta, ne samo na Linux i *nix serverima, već iu Microsoft Windowsu.
Ne propustite: Virtualni hosting baziran na Apache nazivu i IP
Za one od nas koji su najčešće navikli na Apache, Nginx može imati prilično strmu krivulju učenja (barem je to bio moj slučaj), ali se svakako isplati kada postavite par web lokacija i počnite vidjeti statistiku prometa i korištenja resursa.
U ovom članku ćemo objasniti kako koristiti Nginx za postavljanje zasnovanog na imenu i ip baziranog virtualnog hostinga u CentOS/RHEL-u 7 serveri i Debian 8 i derivati, počevši od Ubuntu 15.04 i njegovih spin-off-ova.
Naš scenarij testiranja za ovaj članak je sljedeći:
- Operativni sustav: Debian 8 Jessie server [IP 192.168.0.25]
- Gateway: Ruter [IP 192.168.0.1]
- Web server: Nginx 1.6.2-5
- Lažni domeni: www.tecmintlovesnginx.com i www.nginxmeanspower.com.
Instalacija Nginx web servera
Ako to već niste učinili, instalirajte Nginx prije nego što nastavite dalje. Ako vam je potrebna pomoć da započnete, brza pretraga nginxa na ovoj stranici će vratiti nekoliko članaka na ovu temu. Kliknite na ikonu povećala na vrhu ove stranice i potražite ključnu riječ nginx. Ako ne znate kako da pretražujete članke na ovoj stranici, ne brinite, ovdje smo dodali veze na nginx članke, samo prođite i instalirajte ih u skladu sa vašim odgovarajućim Linux distribucijama.
- Instalirajte i kompajlirajte Nginx iz izvora u RHEL/CentOS 7
- Instalirajte Nginx web server na Debian 8
- Instalirajte Nginx sa MariaDB i PHP/PHP-FPM na Fedora 23
- Instalirajte Nginx Web Server na Ubuntu 15.10 Server/Desktop
- Zaštitite lozinkom Nginx Website Directories
Zatim se pripremite da nastavite s ostatkom ovog vodiča.
Kreiranje virtuelnih hostova zasnovanih na imenu u Nginxu
Kao što sam siguran da već znate, virtualni host je web stranica koju Nginx opslužuje u jednom oblaku VPS ili fizičkom serveru. Međutim, u Nginx dokumentima ćete umjesto toga pronaći izraz "blokovi servera"
, ali oni su u osnovi ista stvar koja se naziva različitim imenima.
Prvi korak za postavljanje virtuelnih hostova je kreiranje jednog ili više blokova servera (u našem slučaju ćemo kreirati dva, po jedan za svaku lažnu domenu) u glavnoj konfiguracijskoj datoteci (/etc/nginx/nginx.conf) ili unutar /etc/nginx/sites-available.
Iako se nazivi konfiguracijskih datoteka u ovom direktoriju (sites-available) mogu postaviti na što god želite, dobra je ideja koristiti nazive domena, a osim toga smo odlučili dodati .conf
ekstenzija koja označava da su ovo konfiguracijski fajlovi.
Ovi blokovi servera mogu biti relativno složeni, ali se u svom osnovnom obliku sastoje 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 gore navedene blokove za početak postavljanja vaših virtualnih hostova ili možete kreirati datoteke s osnovnim kosturom iz /etc/nginx/sites-available/default (Debian ) ili /etc/nginx/nginx.conf.default (CentOS).
Nakon kopiranja, promijenite njihove dozvole 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, trebate izbrisati datoteku uzorka ili je preimenovati u nešto drugo kako biste izbjegli zabunu ili sukobe.
Imajte na umu da ćete također morati kreirati direktorij za logove (/var/www/logs
) i dati Nginx korisniku (nginx ili www-data , ovisno o tome koristite li CentOS ili Debian) dozvole za čitanje i pisanje preko njega:
mkdir /var/www/logs
chmod -R 660 /var/www/logs
chgrp <nginx user> /var/www/logs
Virtuelni hostovi sada moraju biti omogućeni kreiranjem simbolične veze do ove datoteke u direktoriju s omogućenim web lokacijama:
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 kreirajte uzorak html datoteke pod nazivom index.html
unutar /var/www/
za svaki od virtualnih hostova (zamijenite
<!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 server. Ako postoje greške u konfiguraciji, od vas će se tražiti da ih ispravite:
nginx -t && systemctl start nginx
i dodajte sljedeće unose u vaš /etc/hosts
fajl na vašem lokalnom računalu kao osnovnu strategiju rješavanja imena:
192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com
Zatim pokrenite web pretraživač i idite na gore navedene URL adrese:
Da dodate više virtuelnih hostova u Nginx, samo ponovite gore navedene korake onoliko puta koliko je potrebno.
Virtuelni hostovi zasnovani na IP-u u Nginxu
Za razliku od virtuelnih hostova zasnovanih na imenu gdje su svi hostovi dostupni preko iste IP adrese, bazirani na IP virtuelni hostovi zahtijevaju drugačiji IP:port
kombinacija svaki.
Ovo omogućava web serveru da vrati različite stranice u zavisnosti od IP adrese i porta na koji je primljen zahtjev. Budući da nam virtuelni hostovi zasnovani na imenima daju prednost dijeljenja IP adrese i porta, oni su standard za web servere opće namjene i trebali bi biti postavka izbora osim ako vaša instalirana verzija Nginxa ne podržava Indikaciju imena servera (SNI), bilo zato što je ZAISTA zastarjela verzija, ili zato što je kompajlirana bez –with-http_ssl_module opcije kompajliranja.
ako,
nginx -V
ne vraća dolje označene opcije:
morat ćete ažurirati svoju verziju Nginxa ili je ponovo kompajlirati, ovisno o originalnoj metodi instalacije. Za kompajliranje Nginxa, slijedite članak u nastavku:
- Instalirajte i kompajlirajte Nginx iz izvora u RHEL/CentOS 7
Pod pretpostavkom da smo spremni, moramo napomenuti da je još jedan preduvjet za bazirane na IP virtuelne hostove dostupnost zasebnih IP-ova – bilo dodjeljujući ih različitim mrežnim sučeljima, ili korištenjem virtuelnih 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 kreiramo dvije virtualne NIC-e 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 redove, redom:
DEVICE="enp0s3:1"
IPADDR=192.168.0.25
i
DEVICE="enp0s3:2"
IPADDR=192.168.0.26
Kada završite, ponovo pokrenite mrežnu uslugu:
systemctl restart networking
Zatim napravite sljedeće promjene u blokovima servera koji su prethodno definirani 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
Konačno, ponovo 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 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 slikama iznad, sada imate dva virtuelna hosta zasnovana na IP-u koji koriste jedinu NIC na vašem serveru sa dva različita IP aliasa.
Sažetak
U ovom vodiču smo objasnili kako postaviti i zasnovane na imenu i bazirane na IP virtuelne hostove u Nginxu. Iako ćete vjerovatno htjeti koristiti prvu opciju, važno je znati da je druga opcija još uvijek tu ako vam zatreba – samo se pobrinite da ovu odluku donesete nakon što razmotrite činjenice navedene u ovom vodiču.
Pored toga, možda ćete želeti da obeležite Nginx dokumente jer je dostojno i dobro da ih često koristite dok kreirate blokove servera (eto ga – sada govorimo na Nginx jeziku) i konfigurišete ih. Nećete vjerovati svim opcijama koje su dostupne za konfiguriranje i podešavanje ovog izvanrednog web servera.
Kao i uvijek, ne ustručavajte se da nam se javite putem obrasca ispod ako imate bilo kakvih pitanja ili komentara o ovom članku. Radujemo se što ćemo čuti od vas, a vaše povratne informacije o ovom vodiču su dobrodošle.