Průvodce

Nginx server bloky (virtuální hosty) pro provoz více webů na jednom serveru

  • 12 min čtení
  • Tým Hostragons
Nginx server bloky (virtuální hosty) pro provoz více webů na jednom serveru

Nginx server bloky představují koncept virtuálních hostů, který vám umožní na jednom Nginx serveru spravovat více domén nebo webů s oddělenými konfiguracemi. Například na stejném VPS můžete mít nastavené různé kořenové složky, logy, SSL certifikáty a PHP konfigurace pro example.com, blog.example.com či druhou-domenou.cz. Zjednodušeně řečeno jde o vytvoření samostatných složek pro každý web, nasměrování DNS záznamů na IP serveru, vytvoření konfigurace server bloku v /etc/nginx/sites-available, aktivaci pomocí symlink do sites-enabled, test konfigurace a restart Nginxu.

V tomto průvodci si ukážeme, jak nasadit více webů na Nginx server pomocí server bloků vhodně pro produkční prostředí. Cílem není pouze „nějak to rozběhat“, ale vytvořit přehlednou, bezpečnou, rychlou, zálohovatelnou a škálovatelnou strukturu. Praktické tipy ocení agentury, vývojáři, majitelé e-shopů, firmy s více značkami i správci, kteří provozují více projektů na jednom serveru. Pokud zatím nemáte vlastní server, doporučujeme nejprve projít si stránky VPS server pro výběr VPS a Registrace domény pro správu domén.

Co jsou Nginx server bloky?

Nginx server bloky jsou části konfigurace definované jako bloky server, které určují, jaký web se zobrazí na základě HTTP nebo HTTPS požadavku. Jsou obdobou Apache VirtualHost. Když návštěvník zadá doménu do prohlížeče, DNS přeloží doménu na IP adresu serveru. Nginx pak podle hlavičky Host vybere odpovídající server blok dle hodnoty server_name.

Díky tomu lze na jednom IP a fyzickém či virtuálním serveru provozovat desítky různých webů. Každý má vlastní root adresář, přístupové a chybové logy, přesměrování, SSL certifikát, cache politiku i bezpečnostní pravidla. Například firemní web může „být“ v /var/www/firemni-web/public, blog v /var/www/blog/public a testovací prostředí v /var/www/staging/public.

Nginx je v tomto ohledu velmi efektivní díky své event-driven architektuře, která zvládá vysoký počet současných spojení s nízkou spotřebou zdrojů. Proto je oblíbený pro sdílený hosting, VPS, cloudové servery i weby s vysokou návštěvností. Aby vše běželo bez problémů, je však potřeba správně nastavit přístupová práva, DNS směrování, SSL a logování.

Kdy použít Nginx server bloky?

Nginx server bloky jsou nezbytné, když potřebujete spravovat více webů na jednom serveru. Může jít o pár menších firemních stránek, ale i desítky klientských projektů, subdomén nebo mikroservisů. Klíčové je logické oddělení jednotlivých projektů.

  • Chcete na jednom VPS provozovat více domén.
  • Potřebujete přesměrovat www i ne-www verzi na jednu kanonickou adresu.
  • Subdomény mají směřovat do různých složek nebo aplikací.
  • Každý web má vlastní SSL certifikát a bezpečnostní nastavení.
  • Chcete sledovat návštěvnost a chyby jednotlivých webů odděleně.
  • Provozujete na jednom serveru různé aplikace jako Laravel, WordPress, statický HTML nebo Node.js.

Napríklad digitální agentura může na VPS s 4 GB RAM provozovat 8 menších firemních webů bez problémů. Je ale potřeba spočítat nároky na návštěvnost, disk, PHP procesy, databázi a zálohování. Při vyšší zátěži nebo požadavku na izolaci zdrojů je lepší zvolit výkonnější VPS, cloud nebo managed hosting. V takovém případě stojí za zvážení možnosti Web Hosting nebo Korporátní Hosting.

Co je potřeba před začátkem?

V tomto návodu budeme předpokládat Linux server na Ubuntu nebo Debianu. Příkazy se mohou lišit podle distribuce, ale princip je stejný. Před jakýmkoliv zásahem do produkce vždy vytvořte zálohu, protože špatná konfigurace Nginxu může způsobit nedostupnost všech webů.

Technická příprava

  • Linux uživatel s root nebo sudo právy.
  • Funkční Nginx server.
  • Doména nasměrovaná na IP adresu serveru.
  • Otevřené porty 80 a 443 v firewallu.
  • Uspořádaná složková struktura pro webové soubory.
  • Platný SSL certifikát nebo využití bezplatného Let’s Encrypt.
  • Pro PHP aplikace nainstalovaný PHP-FPM.

DNS A záznam směřuje hlavní doménu na IPv4 adresu serveru, AAAA na IPv6 pokud je dostupná. Subdomény jako www se obvykle řeší CNAME nebo záznamem A. DNS změny se mohou propagovat od několika minut až do 24 hodin. Doporučujeme proto nejprve nastavit DNS, až poté konfiguraci Nginxu.

Doporučená struktura složek

Častou chybou je mít všechny weby v jedné složce, což ztěžuje správu, zálohování a ladění. Lepší je pro každou doménu vytvořit samostatnou složku s podsložkami public, logs, backups apod.

Příklad: /var/www/site1.cz/public, /var/www/site1.cz/logs, /var/www/site2.cz/public, /var/www/site2.cz/logs. V konfiguraci Nginxu root vždy směřuje do složky public. Tím zajistíte, že citlivé soubory jako .env nebo zálohy nebudou dostupné přes web.

Pro základní test můžete do každé public složky vložit jednoduchý soubor index.html s textem identifikujícím web. V produkci je vhodné, aby vlastníkem složek byl uživatel www-data nebo uživatel pro deploy. Doporučená práva jsou 755 pro složky a 644 pro soubory. U aplikací jako WordPress je potřeba zvlášť ošetřit složky pro nahrávání souborů.

Krok za krokem: Vytvoření Nginx server bloku

Následující postup je ilustrovaný na příkladu domény site1.cz, stejný proces zopakujete pro další weby. Důležité je pro každý web používat unikátní server_name, root a logy.

1. Vytvoření složky pro web

Nejprve založte složku pro webové soubory, například: sudo mkdir -p /var/www/site1.cz/public. Poté vytvořte testovací index.html s textem „Toto je testovací stránka site1.cz“.

Pro správné vlastnictví použijte: sudo chown -R www-data:www-data /var/www/site1.cz. Pokud používáte jiného uživatele pro nasazení, upravte skupinová práva. Vyhněte se oprávněním 777, která by mohla ohrozit bezpečnost serveru.

2. Vytvoření konfiguračního souboru server bloku

Obvyklá praxe je ukládat konfigurace do /etc/nginx/sites-available a aktivovat je symlinkem v /etc/nginx/sites-enabled. Pro site1.cz vytvořte soubor /etc/nginx/sites-available/site1.cz.

Základní konfigurace může vypadat takto:

server {
    listen 80;
    server_name site1.cz www.site1.cz;

    root /var/www/site1.cz/public;
    index index.html index.htm;

    access_log /var/log/nginx/site1.cz.access.log;
    error_log /var/log/nginx/site1.cz.error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

Tento blok poslouchá na portu 80, definuje domény, umístění webových souborů, výchozí index a logy. Direktiva try_files zajistí, že pokud požadovaný soubor neexistuje, vrátí chybu 404. Pro statické weby je to dostačující konfigurace.

3. Aktivace webu

Pro aktivaci vytvořte symbolický odkaz:

sudo ln -s /etc/nginx/sites-available/site1.cz /etc/nginx/sites-enabled/site1.cz

Tento způsob je lepší než kopírování, protože změny v původním souboru se automaticky projeví i zde. Pokud nechcete, aby vás rušila výchozí stránka Nginxu, můžete deaktivovat default konfiguraci odstraněním symlinku /etc/nginx/sites-enabled/default. Nezapomeňte ale ověřit, že váš vlastní blok funguje správně.

4. Test a restart Nginxu

Po úpravách spusťte test konfigurace příkazem:

sudo nginx -t

Pokud je vše v pořádku, restartujte Nginx bez výpadku:

sudo systemctl reload nginx

Příkaz reload je bezpečnější než restart, protože neukončuje aktivní spojení náhle.

Při chybě testu Nginx zobrazí řádek a typ chyby, obvykle jde o chybějící středník, nesprávné závorky, špatnou cestu nebo duplicitní server_name. Než budete pokračovat, chyby opravte.

Přidání dalších webů

Výhoda více webů na Nginxu je, že po nastavení prvního můžete stejný postup opakovat. Pro site2.cz vytvoříte složku /var/www/site2.cz/public, konfiguraci /etc/nginx/sites-available/site2.cz, upravíte root a logy a aktivujete symlinkem do sites-enabled. Nakonec ověříte konfiguraci a reloadnete Nginx.

Příklad základního server bloku pro druhý web:

server {
    listen 80;
    server_name site2.cz www.site2.cz;

    root /var/www/site2.cz/public;
    index index.html;

    access_log /var/log/nginx/site2.cz.access.log;
    error_log /var/log/nginx/site2.cz.error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

Oddělené logy jsou velkou výhodou – můžete snadno sledovat chyby a návštěvnost jednotlivých webů zvlášť. Například pokud jeden web vykazuje zvýšený počet 404 chyb, zatímco ostatní ne, snadno problém identifikujete. Stejně tak lze analyzovat návštěvnost, boty nebo výkon.

SSL a HTTPS konfigurace

V roce 2026 je HTTPS nejen bezpečnostní standard, ale i faktor pro SEO a důvěru uživatelů. Pro weby s platebními formuláři, přihlašováním nebo administrací je SSL povinnost. Každá doména musí mít správný certifikát. Na stránkách Hostragons najdete přehled možností na SSL certifikáty.

Pokud používáte Let’s Encrypt, certifikáty lze snadno získat přes Certbot. Například příkaz:

certbot --nginx -d site1.cz -d www.site1.cz

automaticky rozpozná konfiguraci a přidá HTTPS blok. Po automatickém nastavení je ale dobré konfiguraci zkontrolovat, protože může dojít k duplicitám nebo nesprávným přesměrováním.

Obvyklé je přesměrování HTTP (port 80) na HTTPS (port 443) pomocí trvalého přesměrování 301, což je SEO-friendly. Rozhodněte se, zda preferujete www nebo ne-www variantu, a přesměrujte všechny ostatní verze na tuto kanonickou adresu. Například pokud preferujete https://site1.cz, přesměrujte HTTP i HTTPS www variantu na tuto adresu. To výrazně snižuje riziko duplicitního obsahu.

Nginx server bloky pro PHP a WordPress

Statické weby mají jednoduchou konfiguraci, ale WordPress, Laravel a další PHP aplikace vyžadují propojení s PHP-FPM. V konfiguraci se přidává podpora pro index.php a PHP zpracování přes socket. Například na Ubuntu s PHP 8.3 může cesta k socketu být /run/php/php8.3-fpm.sock.

Příklad konfigurace pro WordPress:

server {
    listen 80;
    server_name wordpress-site.cz www.wordpress-site.cz;

    root /var/www/wordpress-site.cz/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;
    }
}

Direktiva try_files zajistí správné fungování trvalých odkazů. Pro bezpečnost je vhodné omezit přístup k souborům jako xmlrpc.php nebo wp-login.php a zamezit spouštění PHP ve složkách uploads. Pokud hostujete více WordPress webů na jednom VPS, používejte samostatné databáze, uživatele a pravidelné aktualizace. Pro snadnější správu je vhodný WordPress hosting.

Porovnání Nginx server bloků a Apache VirtualHost

Porovnání Nginx server bloků a Apache VirtualHost

Nginx a Apache dosahují stejného cíle různými způsoby. Oba umožňují provozovat více webů na jednom serveru, ale volba závisí na potřebách aplikace, správě a výkonu.

Porovnání Nginx server bloků a Apache VirtualHost
KritériumNginx server blokyApache VirtualHost
VýkonVyniká nízkou spotřebou při vysokém počtu souběžných připojení.Může mít vyšší nároky kvůli modulům a procesnímu modelu.
KonfiguraceJednoduchá, centralizovaná konfigurace..htaccess umožňuje flexibilní konfiguraci na úrovni adresářů.
Statické souboryVelmi rychlé a efektivní podání.Dobrý výkon, ale Nginx je obvykle rychlejší a lehčí.
PHP zpracováníSpolupracuje s PHP-FPM.Podporuje mod_php i PHP-FPM.
Scénáře užitíSkvělé pro reverzní proxy, statické soubory, vysokou zátěž a moderní aplikace.Vhodné pro starší aplikace závislé na .htaccess a sdílený hosting.

Pokud aplikace silně spoléhá na .htaccess, může být Apache jednodušší volba. Pro vysokou návštěvnost, reverzní proxy a moderní deploymenty je však Nginx často lepší. Některé konfigurace kombinují Nginx jako proxy a Apache jako backend.

Bezpečnostní doporučení

Provoz více webů na jednom serveru snižuje náklady, ale zároveň zvyšuje bezpečnostní nároky. Pro minimalizaci rizik platí zásady izolace a princip nejnižších oprávnění.

  • Pro každý web vytvořte samostatnou databázi a databázového uživatele.
  • Omezte root složku pouze na public.
  • Citlivé soubory jako zálohy, .env, .git, konfigurace a SQL soubory nevystavujte do webu.
  • Pravidelně obnovujte SSL certifikáty a vynucujte HTTPS.
  • Používejte firewall (např. UFW) s otevřenými pouze nutnými porty.
  • Pravidelně aktualizujte Nginx a operační systém.
  • Každý web má vlastní access_log a error_log.
  • Pro administraci nastavte omezení IP adres nebo další ověřování.
  • Vyhněte se oprávněním 777 u souborů a složek.

Dále je vhodné přidat bezpečnostní HTTP hlavičky jako X-Frame-Options, X-Content-Type-Options, Referrer-Policy a Content-Security-Policy. Poslední je ale potřeba testovat opatrně, aby neblokovala skripty a styly. Více o bezpečnosti najdete v článcích Bezpečnost webových stránek.

Tipy pro výkon a SEO

Nginx server bloky ovlivňují nejen běh webu, ale i jeho rychlost a SEO. Špatná přesměrování, chybějící gzip nebo brotli komprese, přemíra logů a nevhodné cache nastavení mohou zpomalit stránky. Google oceňuje rychlé, spolehlivé a bezpečné weby.

Určete pro každou doménu jednu kanonickou adresu a přesměrujte HTTP i všechny varianty HTTPS na ni jedním 301 přesměrováním. Vyhněte se řetězcům typu http://site.cz → http://www.site.cz → https://www.site.cz → https://site.cz. Pro statické soubory nastavte cache-control hlavičky a u často měněných souborů použijte verzování názvů nebo query stringy. Pro vysokou návštěvnost lze využít Nginx microcache, FastCGI cache nebo CDN. Více o CDN najdete na Co je CDN.

Správa logů a monitoring

Správa logů je klíčová pro řešení problémů při provozu více webů. Oddělené logy jasně ukážou, kde vznikají chyby. Access_log zaznamenává požadavky návštěvníků, error_log chyby konfigurace, oprávnění, neexistující soubory či problémy s backendem. Chyba 502 Bad Gateway obvykle souvisí s PHP-FPM nebo backendem, 403 Forbidden znamená problém s oprávněními nebo chybějícím indexem, 404 Not Found pak špatnou cestou nebo přepisem.

Pro kontrolu růstu logů se používá logrotate. U menších projektů postačí denní nebo týdenní rotace, u větších je vhodné centrální sběr logů, metriky a alerty. Zaplněný disk může způsobit, že Nginx nebude moci zapisovat logy, což vede k výpadkům. Proto je dobré nastavit limity diskového prostoru.

Časté chyby a rychlé opravy

Při práci s Nginx server bloky se často setkáte s následujícími problémy. Znalost těchto situací vám ušetří čas:

  • Na špatnou doménu se otevírá jiný web: zkontrolujte duplicitní server_name a defaultní server blok.
  • 403 Forbidden: zkontrolujte root složku, oprávnění a existenci index souboru.
  • 404 Not Found: ověřte cestu v root a pravidla try_files.
  • 502 Bad Gateway: zkontrolujte běh PHP-FPM a správnou cestu socketu.
  • SSL certifikát je pro jinou doménu: zkontrolujte konfiguraci portu 443 a certifikátů.
  • Vyskytuje se přesměrovací smyčka: zjednodušte pravidla přesměrování HTTP/HTTPS a www/ne-www.
  • Nginx se nepřenačítá: opravte chyby v konfiguraci podle výstupu nginx -t.

Dobře fungující kontrolní postup je: ověřit DNS, aktivní konfiguraci Nginxu, existenci root složky, oprávnění, úspěšný test konfigurace a podívat se do logů. Tento systém vás rychle dovede k řešení bez paniky.

Praktický checklist před nasazením do produkce

Před spuštěním webu v produkci si projděte následující body. Zvlášť u klientských projektů je dobré je zdokumentovat:

  • DNS záznamy A/AAAA směřují na správnou IP adresu.
  • Vybraná kanonická verze domény (www vs. ne-www) je nastavena.
  • Veškerý HTTP provoz je přesměrován na HTTPS pomocí 301.
  • SSL certifikát je platný a automatická obnova funguje.
  • Pro každý web je definován unikátní root a samostatné logy.
  • Nginx konfigurace prošla testem sudo nginx -t.
  • Je nastaven zálohovací plán a proveden test obnovy.
  • Oprávnění k souborům odpovídají principu minimálních práv.
  • Firewall povoluje jen potřebné porty.
  • Logy jsou aktivně monitorovány minimálně 15 minut po spuštění.

I když se může zdát seznam krátký, výrazně snižuje riziko výpadků. Pravidelná kontrola SSL, DNS a logů zachytí většinu problémů včas.

Závěr

Nginx server bloky jsou základním nástrojem pro správu více webů na jednom serveru – umožňují uspořádaný, bezpečný a výkonný provoz. Správná struktura složek, oddělené konfigurace, jasná pravidla přesměrování, HTTPS, logování a testování dělají správu více webů efektivní. Stejné postupy platí pro malé portfolio i rozsáhlé klientské projekty.

Pokud plánujete nový web, nejprve si ujasněte doménu, serverové zdroje a SSL potřeby. Poté postupujte podle našeho checklistu pro nastavení Nginxu krok za krokem. Pro jednodušší správu můžete využít Hostragons Hostingové balíčky, VPS server a SSL certifikáty.

Často kladené dotazy

Kolik webů lze na Nginx server blocích provozovat?

Technicky můžete na jednom serveru provozovat desítky i stovky webů, limity jsou dány výkonem CPU, RAM, diskem, databází a PHP-FPM kapacitou. U nízké návštěvnosti statických stránek je to snazší, u náročných WordPress nebo e-shopů méně.

Je potřeba pro každý web vlastní SSL certifikát?

Ano, každý doménový nebo subdoménový web, který chcete zabezpečit HTTPS, musí mít certifikát zahrnutý do konfigurace. Můžete použít individuální certifikáty nebo SAN/wildcard certifikáty. Podstatné je, aby v 443 server bloku byly správné certifikáty přiřazeny k doméně.

Lze pomocí Nginx server bloku provozovat subdomény?

Ano, pro subdomény jako blog.site.cz nebo admin.site.cz vytvoříte samostatný server blok s unikátním server_name a root adresářem nebo proxy na backend. V DNS musíte mít správný A nebo CNAME záznam.

Jaký je rozdíl mezi sites-available a sites-enabled?

sites-available obsahuje všechny dostupné konfigurace, sites-enabled pak aktivní konfigurace. Obvykle se v sites-enabled vytváří symbolické odkazy na soubory v sites-available. Tento systém umožňuje snadno zapínat a vypínat weby.

Proč se načítá nesprávný web?

Nejčastější příčiny jsou nesprávný DNS záznam (směřující na jiný server/IP), chybně nastavený server_name, defaultní server blok, který zachytává požadavky, nebo nesprávná konfigurace SSL bloku na portu 443. Doporučujeme postupně ověřit DNS, nginx -t, symlinky v sites-enabled a logy.

Sdílejte tento článek:

Tým Hostragons

Aktuální průvodci od našeho týmu odborníků na hosting, servery a doménová jména. Pojďme společně najít to správné řešení pro váš projekt.

Kontaktujte nás