Důvod, proč používat kombinaci Apache a Nginx, lze samozřejmě dohledat i jinde na rozsáhlém internetu, ale protože jsem cyklista, napíšu to svými slovy. Při provozu webového serveru Apache vytváří při každém novém připojení nový proces, takže i když nejsou k serveru připojeni žádní uživatelé, jsou v systému neustále spuštěny 4–5 procesů httpd. Tím Apache generuje n-krát více procesů, což samozřejmě ovlivňuje množství volné operační paměti a zvyšuje zátěž procesoru serveru. Nginx tuto zátěž dokáže výrazně snížit. Tato kombinace webových serverů funguje přibližně takto: na frontendu běží Nginx, který zachycuje všechny příchozí připojení od uživatelů (agentů vašich návštěvníků). Pokud je vyžadován statický obsah, jako jsou HTML stránky, fotografie nebo sdílené soubory, Nginx tento požadavek zpracuje sám a co nejrychleji jej předá klientovi. Pokud je však potřeba zpracovat nějaký PHP skript, Nginx po zachycení požadavku od klienta předá zpracování Apache (backend), který pomocí svého mod_php skript zpracuje a vrátí Nginxu již připravená data. Počet spuštěných procesů Apache se přitom nezvyšuje (v této kombinaci, jak chápu, má Apache pouze jedno připojení z 127.0.0.1, na kterém přijímá požadavky od Nginxu). Pokud to řekneme ještě jednodušeji, Nginx je lehká mezivrstva mezi klientem a hlavním výkonným webovým serverem, která zabraňuje množení procesů Apache a tím šetří cennou operační paměť. Nyní k nastavení. Protože nepoužívám Debian ani Ubuntu, popíšu proces instalace a nastavení v prostředí Arch Linuxu.
sudo pacman -S nginx
Po instalaci Nginxu je třeba nakonfigurovat Apache (pravděpodobně jej již máte). Otevřete konfigurační soubor:
sudo nano -w /etc/httpd/conf/httpd.conf
Najděte řádek
ServerRoot "/etc/httpd" Listen 80
a změňte ho na 8080 (ve výchozím nastavení Apache naslouchá na hlavním portu 80). Nyní bude Apache čekat na připojení na portu 8080, kam bude Nginx odesílat požadavky na zpracování skriptů. S konfigurací Apache jsme tedy hotovi, alespoň já jsem v ní již nic neměnil. Nyní přejdeme k Nginxu:
sudo nano -w /etc/nginx/conf/nginx.conf
Bude nutné odkomentovat některé řádky. V prvním řádku odkomentujte „user“ a zadejte svého uživatele, nejčastěji je to http. Dále nastavíme, kam bude Nginx zapisovat chybové protokoly:
error_log /var/log/httpd/error.log notice;
Dále, pokud chceme používat awstats pro počítání statistiky návštěvnosti, odkomentujte toto:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
Níže uvedené nastavení bylo převzato z nějakého důvěryhodného zdroje a alespoň zatím jsem se do podrobností nezabýval.
Gzip kompresi jsem vypnul, i když všichni doporučují ji zapnout, po jejím zapnutí u mě disk začal divoce šustit, a tak jsem ji vypnul. Nyní nastavení samotného serveru: Nakonfigurujte Nginx tak, aby naslouchal na portu 80. Chci upozornit, že pokud jste v konfiguraci Apache nastavili naslouchání na 127.0.0.1:8080, musíte zde také použít listen 127.0.0.1:80 místo pouhého listen 80.
server {
listen 80;
server_name syslinux.ru www.syslinux.ru;
charset utf-8;
access_log /var/log/httpd/host.access.log main;
Tento řádek určuje soubor protokolu, do kterého se budou zapisovat informace o hostech připojujících se k nginx. Všechny zdroje, kde jsem četl o konfiguraci nginx, se snažily implementovat statistiku pomocí nějakých dodatečných modulů, ale v tomto případě, pokud již máte spuštěný awstats na Apache, stačí v nastavení awstats zadat nový protokol (v tomto případě host.access.log) pro sběr statistik. Řádek location ponecháme beze změny.
location / {
Dále najdeme řádek proxy:
proxy_pass http://127.0.0.1:8080/;
Zde zadáváme adresu a port, kam mají být předávány požadavky; tento port naslouchá Apache, což je přesně to, co potřebujeme. Další důležitý řádek je root, tedy umístění souborů serveru vzhledem k souborovému systému; u mě je zde:
root /srv/http;
Poté restartujeme Apache
sudo /etc/rc.d/httpd restart
a zkusíme spustit nginx:
sudo /etc/rc.d/nginx start
ссылка на статью
