Vodiči

Nginx Virtual Hostovi: Više Web Stranica na Jednom Serveru

  • 12 min čitanja
  • Hostragons tim
Nginx Virtual Hostovi: Više Web Stranica na Jednom Serveru

Nginx virtual hostovi, poznati i kao "server blokovi", omogućuju da na jednom Nginx serveru hostujete više web stranica ili domena s odvojenim konfiguracijama. Na primjer, na istom VPS-u možete kreirati odvojene root direktorije, log fajlove, SSL certifikate i PHP postavke za example.com, blog.example.com i drugi-sajt.com. Rješenje je jednostavno: za svaki sajt kreirate zasebni direktorij, postavite DNS zapise domene na IP adresu servera, napišete zaseban server blok ispod /etc/nginx/sites-available, povežete ga u sites-enabled direktorij, testirate konfiguraciju i reloadate Nginx servis.

Ovaj vodič pokriva proces hostanja više web stranica na jednom serveru pomoću Nginx virtual hostova, i to na način prilagođen produkcijskoj upotrebi. Cilj nije samo funkcionalnost, već i upravljivost, sigurnost, brzina, backup i skalabilnost. Praktične korake dijelimo posebno za agencije, developere, e-commerce vlasnike, firme s više brendova i sysadmin-e koji upravljaju s više projekata na jednom serveru. Ako još nemate server, za izbor resursa pogledajte VPS server, a za upravljanje domenama Registracija domene.

Šta su Nginx Virtual Hostovi?

Virtual hostovi u Nginxu su konfiguracijski dijelovi unutar server blokova koji definiraju na koju web stranicu će biti preusmjeren HTTP ili HTTPS zahtjev. Slično je Apache VirtualHost konceptu. Kada posjetitelj upiše domenu u browser, DNS povezuje tu domenu sa IP adresom servera. Nginx zatim provjerava Host header i pokreće server blok čiji server_name odgovara zahtjevu.

Zahvaljujući tome, na jednom IP-u i serveru možete objaviti desetke različitih web stranica. Svaka stranica može imati zaseban root direktorij, access log, error log, pravila preusmjeravanja, SSL certifikat, cache politiku i sigurnosne mjere. Primjer: korporativni sajt u /var/www/korporativni/public, blog u /var/www/blog/public, staging u /var/www/staging/public.

Nginx je izuzetno efikasan u ovakvoj konfiguraciji zbog svoje event-driven arhitekture koja omogućuje upravljanje velikim brojem istovremenih konekcija uz minimalnu potrošnju resursa. Zato se često koristi za shared hosting, VPS, cloud servere i visoko-trafične aplikacije. Za ispravan rad višestrukog hostanja, važno je pažljivo planirati sve od file permisija do DNS usmjeravanja, SSL instalacije i log razdvajanja.

Kada koristiti Nginx Virtual Hostove?

Nginx virtual hostovi su idealni kad želite upravljati više web projekata na jednom serveru. To može biti par korporativnih stranica ili desetine klijent projekata, subdomena ili microservisa. Ključ je u logičkoj razdvojenosti svakog projekta.

  • Želite objaviti više domena na istom VPS-u.
  • Želite preusmjeriti www i non-www domene na jedan kanonski URL.
  • Želite povezati subdomene sa različitim aplikacijama ili folderima.
  • Za svaki sajt želite zaseban SSL certifikat i sigurnosnu politiku.
  • Pratite klijentske projekte zasebnim logovima.
  • Pokrećete Laravel, WordPress, statički HTML, Node.js na jednom serveru.

Recimo, digitalna agencija može na jednom VPS-u od 4 GB RAM hostati osam slabije trafičnih korporativnih sajtova. Za svaki projekt treba procijeniti promet, disk prostor, broj PHP procesa, opterećenje baze i učestalost backup-a. Ako su projekti trafično zahtjevni ili je izolacija resursa kritična, preporučuje se jači VPS, cloud server ili managed hosting. U tom slučaju, uporedite Web Hosting i Korporativni Hosting opcije.

Prije početka: Šta vam treba?

Ovaj vodič pretpostavlja Ubuntu ili Debian bazirani Linux server. Komande se mogu razlikovati po distribuciji, ali princip ostaje isti. Prije produkcijskih promjena, obavezno napravite backup. Loša Nginx konfiguracija može učiniti sve sajtove privremeno nedostupnim.

Tehnička priprema

  • Linux korisnički račun s root ili sudo ovlastima.
  • Instaliran i pokrenut Nginx servis.
  • Barem jedna domena usmjerena na IP adresu servera.
  • Otvoreni portovi 80 i 443 na firewall-u.
  • Organizirana struktura direktorija za sajt fajlove.
  • Validan SSL certifikat ili besplatni Let’s Encrypt.
  • Za PHP aplikacije: PHP-FPM instaliran.

DNS: A record povezuje glavnu domenu s IPv4, AAAA s IPv6 adresom. Subdomene (npr. www) možete povezati CNAME ili A recordom. Propagacija DNS-a traje od par minuta do 24 sata. Brže je prvo pripremiti DNS, pa zatim konfigurirati Nginx virtual hostove.

Preporučena struktura direktorija

Najveća greška je držati sve fajlove pomiješane u jednom folderu. To je kratkoročno jednostavno, ali dugoročno otežava održavanje, backup i debugiranje. Bolji pristup je: za svaku domenu poseban root direktorij, a unutar njega public, logs i backups podfolderi.

Primjer: /var/www/sajt1.com/public, /var/www/sajt1.com/logs, /var/www/sajt2.com/public, /var/www/sajt2.com/logs. Nginx root postavite prema public folderu. Tako aplikacijski fajlovi, .env i backup-i nisu direktno dostupni s weba.

Za test, u svaki public folder stavite jednostavan index.html sa imenom sajta. Tako brzo provjerite radi li server blok. U produkciji, vlasništvo foldera je obično www-data ili deployment korisnik. Permisije: 755 za foldere, 644 za fajlove. Kod WordPressa, uploads folder treba dodatno razmotriti zbog pisanja.

Korak po korak: Kreiranje Nginx Virtual Hostova

Kroz primjer sa sajta sajt1.com, opisujemo korake. Isti postupak ponavljate za drugi, treći ili više sajtova. Ključ je: svaki sajt ima jedinstveni server_name, root i log fajl.

1. Kreirajte direktorij za sajt

Prvo kreirajte folder za web fajlove. Primjer: sudo mkdir -p /var/www/sajt1.com/public. Napravite testni /var/www/sajt1.com/public/index.html sa tekstom "Ovo je test stranica za sajt1.com".

Za pravilno vlasništvo: sudo chown -R www-data:www-data /var/www/sajt1.com. Ako deployate s drugim korisnikom, prilagodite grupne permisije. Izbjegavajte 777 permisije - to može ugroziti sigurnost i omogućiti napadačima zloupotrebu upload foldera.

2. Kreirajte konfiguracijsku datoteku za virtual host

Preporučena praksa je držati konfiguracije u /etc/nginx/sites-available, a aktivirati ih simboličkim linkom u /etc/nginx/sites-enabled. Primjer fajl: /etc/nginx/sites-available/sajt1.com.

Osnovni HTTP server blok izgleda ovako: server { listen 80; server_name sajt1.com www.sajt1.com; root /var/www/sajt1.com/public; index index.html index.htm; access_log /var/log/nginx/sajt1.com.access.log; error_log /var/log/nginx/sajt1.com.error.log; location / { try_files $uri $uri/ =404; } }

Ovdje listen 80 sluša HTTP promet, server_name definira domene koje pripadaju bloku, root pokazuje na direktorij, index određuje default fajl. try_files vraća 404 ako fajl ne postoji. Za statičke sajtove ovo je dovoljno.

3. Aktivirajte sajt

Za aktivaciju: sudo ln -s /etc/nginx/sites-available/sajt1.com /etc/nginx/sites-enabled/sajt1.com. Ovo je bolje od kopiranja fajlova, jer izmjene se automatski odražavaju.

Da default Nginx stranica ne preuzima vašu, uklonite default konfiguraciju iz /etc/nginx/sites-enabled/default. Prije toga, provjerite da vaš virtual host radi ispravno.

4. Testirajte konfiguraciju i reloadajte Nginx

Nakon svake izmjene, testirajte sintaksu: sudo nginx -t. Ako je test OK, reloadajte: sudo systemctl reload nginx. reload je sigurniji od restart, jer nježno upravlja aktivnim konekcijama.

Kod greške, nginx -t pokazuje ime fajla i broj linije. Najčešće greške su: nedostaje zarez, pogrešna zagrada, greška u putanji foldera ili sudar server_name vrijednosti. Ne reloadajte Nginx dok ne otklonite grešku.

Dodavanje druge i treće stranice

Ljepota višestrukog hostanja je što jednom kad napravite ispravan setup, proces je lako ponoviti. Za sajt2.com kreirate /var/www/sajt2.com/public, napišete /etc/nginx/sites-available/sajt2.com konfiguraciju, promijenite root i logove, povežete simbolički, testirate.

Osnovni blok za drugi sajt: server { listen 80; server_name sajt2.com www.sajt2.com; root /var/www/sajt2.com/public; index index.html; access_log /var/log/nginx/sajt2.com.access.log; error_log /var/log/nginx/sajt2.com.error.log; location / { try_files $uri $uri/ =404; } }

Odvojen log za svaki sajt je izuzetno koristan. Ako jedan sajt ima više 404 grešaka, drugi možda nema problema. Odvojeni logovi omogućuju da brzo pronađete izvor greške, analizirate promet, detektujete napade ili pratite performanse po sajtu.

SSL i HTTPS konfiguracija

U 2026, HTTPS je standard za SEO i povjerenje korisnika. Browseri označavaju HTTP sajtove kao nesigurne, a SSL je obavezan za prijave, plaćanja, forme i admin panele. Za svaki domen treba definirati pravi certifikat. Za SSL rješenja pogledajte SSL certifikati.

Koristite li Let’s Encrypt, Certbot može generirati certifikat za svaki domen. Komanda certbot --nginx -d sajt1.com -d www.sajt1.com automatski dodaje HTTPS blok. Nakon toga, pregledajte konfiguraciju – automatska izmjena može ponekad napraviti pogrešne redirectove ili duplicirane blokove.

Najčešće, sav HTTP promet na portu 80 se trajno preusmjerava na HTTPS port 443. 301 redirect je SEO-friendly. Odaberite da li ćete koristiti www ili non-www, i sve varijacije preusmjerite na kanonsku verziju. Npr. koristite https://sajt1.com, pa i HTTP i HTTPS www promet šaljete na non-www. Tako izbjegavate duplirani sadržaj.

Nginx Virtual Host za PHP i WordPress

Za statički HTML konfiguracija je jednostavna, ali za WordPress, Laravel ili custom PHP aplikacije treba povezati PHP-FPM. Definišite index.php i PHP zahtjeve usmjerite na odgovarajući socket (npr. /run/php/php8.3-fpm.sock). Verzija zavisi od servera.

Primjer PHP konfiguracije: server { listen 80; server_name wordpress-sajt.com www.wordpress-sajt.com; root /var/www/wordpress-sajt.com/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$args; } location ~ php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.3-fpm.sock; } }

Za WordPress, try_files $uri $uri/ /index.php?$args je bitan za permalinks. Također razmislite o sigurnosnim mjerama: ograničite pristup xmlrpc.php, rate-limit wp-login.php, zabranite PHP izvršavanje u uploads folderu. Za svaki WordPress sajt koristite odvojenu bazu, korisnika i politiku redovnog ažuriranja. Ako želite jednostavnije rješenje, WordPress hosting može biti bolja opcija.

Usporedba: Nginx Virtual Host vs Apache VirtualHost

Usporedba: Nginx Virtual Host vs Apache VirtualHost

Nginx i Apache mogu hostati više sajtova na jednom serveru, ali arhitektura i administracija su različite. Izbor ovisi o potrebama aplikacije, navikama upravljanja i performansama.

Usporedba: Nginx Virtual Host vs Apache VirtualHost
KriterijNginx Virtual HostApache VirtualHost
PerformanseOdličan za visoko-trafične sajtove, minimalna potrošnja resursa.Može trošiti više resursa, ovisno o modulu i procesu.
KonfiguracijaCentralizirana i jednostavna konfiguracija..htaccess daje fleksibilnost po folderu.
Statička datotekaVrlo brz i efikasan.Dobar, ali Nginx je obično brži.
PHP podrškaRadi preko PHP-FPM.Podržava mod_php ili PHP-FPM.
UpotrebaReverse proxy, statički fajlovi, visoki promet, moderne aplikacije.Praktično za starije aplikacije ovisne o .htaccess i shared hosting.

Ako aplikacija zavisi od .htaccess pravila, Apache je lakši. Za visoki promet, reverse proxy, cache i moderne deploye – Nginx je bolji. U nekim slučajevima, Nginx se koristi kao reverse proxy ispred Apache-a.

Najbolje sigurnosne prakse

Hostanje više sajtova na jednom serveru je ekonomski isplativo, ali povećava sigurnosnu odgovornost. Izolacija i minimalna ovlaštenja su ključ da ranjivost na jednom sajtu ne ugrozi ostale.

  • Za svaki sajt kreirajte odvojenu bazu i korisnika.
  • Web root ograničite samo na public folder.
  • Backup, .env, .git, config i SQL fajlove držite izvan web foldera.
  • Redovno obnavljajte SSL certifikate i forsirajte HTTPS.
  • Koristite UFW ili sličan firewall, otvarajte samo potrebne portove.
  • Redovno update-ujte Nginx i OS.
  • Držite zasebne access_log i error_log fajlove za svaki sajt.
  • Admin panele zaštitite IP restrikcijama ili dodatnom autentifikacijom.
  • Izbjegavajte permisije 777 na fajlovima.

Dodatno, razmislite o sigurnosnim HTTP headerima: X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Content-Security-Policy. No, CSP može blokirati skripte i stilove ako nije dobro testiran – prvo probajte u test okruženju. Za više sigurnosnih savjeta, pogledajte Sigurnost web stranice.

Performanse i SEO: Na šta paziti

Nginx virtual hostovi utiču i na performanse i na SEO. Loše redirect lančanje, pogrešan canonical, neaktiviran gzip ili brotli, preveliki log fajlovi, loše cache postavke – sve to može usporiti sajt. Google gleda user experience: brz, siguran i stabilan sajt ima bolje rezultate.

Za svaki domen odredite kanonsku verziju. Redirectujte HTTP na HTTPS, www na non-www ili obrnuto, i to u jednom koraku. Npr. izbjegavajte: http://sajt.com → http://www.sajt.com → https://www.sajt.com → https://sajt.com; uradite jedan 301 prema cilju.

Za statičke fajlove koristite cache-control header. Slike, CSS i JS mogu ostati u browseru određeno vrijeme. Za često mijenjane fajlove koristite verzioniranje u imenu ili query string. Aktivirajte gzip kompresiju za HTML, CSS, JS, JSON – tako štedite bandwidth. Na trafičnim sajtovima razmislite o microcache, FastCGI cache ili CDN-u. Za globalni pristup, pogledajte Šta je CDN?.

Log management i monitoring

Odvojeni logovi su ključ za brzo rješavanje problema kod višestrukog hostanja. access_log bilježi posjete, error_log konfiguracijske greške, permisije, nedostatke fajlova i upstream probleme. 502 Bad Gateway je često vezan za PHP-FPM ili backend, 403 Forbidden za permisije ili index fajl, 404 Not Found za pogrešan root ili rewrite nakon DNS-a.

Da log fajlovi ne rastu bez limita, podesite logrotate. Za male projekte dnevna ili sedmična rotacija je dovoljna. Kod velikog prometa, koristite centralni log collection, metric monitoring i alerting. Disk space threshold je bitan – pun disk može prekinuti logiranje, zaustaviti bazu i učiniti sajtove nedostupnim.

Najčešće greške i brza rješenja

Tipične greške kod rada sa Nginx virtual hostovima:

  • Domena otvara pogrešan sajt: provjerite server_name sudar i default server blok.
  • 403 Forbidden: provjerite root folder, permisije i postojanje index fajla.
  • 404 Not Found: provjerite root putanju i try_files pravilo.
  • 502 Bad Gateway: provjerite radi li PHP-FPM i je li socket path ispravan.
  • SSL certifikat pripada pogrešnom sajtu: provjerite server_name i cert file u 443 bloku.
  • Redirect loop: pojednostavite HTTP-HTTPS i www redirect pravila.
  • Nginx ne reloaduje: pogledajte nginx -t output, ispravite syntax error po broju linije.

Iskusni admini imaju jednostavan checklist: DNS ispravan? Nginx konfiguracija aktivna? Root folder postoji? Permisije OK? Servis prošao test? Šta log kaže? Pratite ovaj redoslijed za brza rješenja bez panike.

Praktični checklist za produkciju

Prije objave, provjerite svaki sajt ovim checklistom. Za klijente, dokumentiranje ovih stavki prije predaje daje profesionalni standard.

  • Domena A ili AAAA record ide na pravi IP.
  • Odabrana kanonska verzija (www ili non-www).
  • HTTP redirectovan na HTTPS sa 301.
  • SSL certifikat validan i auto-renew aktiviran.
  • Root i log fajlovi odvojeni za svaki sajt.
  • Nginx konfiguracija potvrđena sudo nginx -t.
  • Backup plan napravljen i testiran restore.
  • Permisije na fajlovima minimalne ovlasti.
  • Na firewallu otvoreni samo potrebni portovi.
  • Error log praćen barem 15 minuta nakon launch-a.

Ova lista izgleda jednostavno, ali značajno smanjuje rizik od downtime-a. Posebno SSL renew, DNS i log monitoring hvataju većinu skrivenih problema na vrijeme.

Zaključak

Nginx virtual hostovi su osnovni alat za organizirano, sigurno i performantno hostanje više sajtova na jednom serveru. Pravilna struktura direktorija, odvojene konfiguracije, jasna pravila redirecta, HTTPS, odvojeni logovi i redovno testiranje čine upravljanje više sajtova laganim i efikasnim. Principi vrijede od malih portfolija do velikih klijent projekata.

Planirate li novi projekt, prvo odredite domenu, server resurse i SSL, pa po ovoj checklisti korak po korak postavite Nginx konfiguraciju. Za upravljivije rješenje, pogledajte Hostragons Hosting paketi, VPS server i SSL certifikati za pravi start pro projekta.

Često postavljana pitanja

Koliko sajtova mogu hostati na Nginx serveru?

Tehnički, možete hostati veliki broj sajtova na jednom Nginx serveru. Limiti su CPU, RAM, disk, promet, opterećenje baze i PHP-FPM kapacitet. Za statičke sajtove – desetine su moguće, za prometne WordPress ili web shopove – preporučuje se manji broj.

Treba li svaki sajt imati zaseban SSL certifikat?

Da, svaki domen ili subdomena koja treba HTTPS mora imati certifikat. Možete koristiti pojedinačne certifikate, SAN ili wildcard, ali bitno je da u Nginx 443 bloku certifikati odgovaraju domeni.

Može li Nginx virtual host objaviti subdomen?

Da. Za blog.sajt.com ili panel.sajt.com kreirajte zaseban server_name i root, ili usmjerite na drugi backend. Na DNS-u, dodajte odgovarajući A ili CNAME record za subdomen.

Razlika između sites-available i sites-enabled?

sites-available je direktorij gdje čuvate konfiguracije, sites-enabled sadrži aktivirane konfiguracije. U sites-enabled pravite simbolički link prema sites-available. Tako efektivno upravljate aktivacijom i deaktivacijom sajtova.

Pogrešan sajt se otvara – gdje je greška?

Najčešće: DNS vodi na pogrešan IP, server_name nije ispravan, default Nginx blok preuzima zahtjev ili SSL blok za 443 ima pogrešan certifikat. Provjerite DNS, nginx -t output, aktivne sites-enabled linkove i access_log za problem.

Podijelite ovaj članak:

Hostragons tim

Ažurirani vodiči našeg stručnog tima o hostingu, serverima i domenima. Hajde da zajedno pronađemo pravo rješenje za vaš projekat.

Kontaktirajte nas