Middle
Proč instalovat Nginx před Ruby?
sobes.tech AI
Odpověď od AI
Nginx se instaluje před Ruby aplikací (například Rails nebo Sinatra) z následujících důvodů:
- Obsluha statických souborů: Nginx efektivně (rychleji a s menší spotřebou zdrojů) obsluhuje statické soubory (CSS, JS, obrázky), čímž uvolňuje procesy Ruby pro zpracování dynamických požadavků.
- Reverse proxy: Nginx funguje jako reverzní proxy, přijímá všechny příchozí HTTP požadavky a přeposílá je na Ruby servery (například Puma, Unicorn) přes protokol (například HTTP nebo Unix Domain Socket). To umožňuje spravovat více Ruby procesů a vyvažovat zátěž.
- SSL/TLS terminace: Nginx může zpracovávat šifrované SSL/TLS spojení, odlehčující Ruby aplikaci od této úlohy.
- Caching: Nginx může ukládat odpovědi do cache, což urychluje doručování často požadovaného obsahu.
- Komprese: Nginx může komprimovat odpovědi (gzip, brotli), snižujíc objem přenášených dat.
- Vyvažování zátěže: Nginx může rozdělovat příchozí požadavky mezi více instancí Ruby aplikace, zvyšujíc dostupnost a škálovatelnost.
- Logování: Nginx nabízí výkonné možnosti logování HTTP požadavků.
- Bezpečnost: Nginx může provádět základní bezpečnostní funkce, jako je omezení rychlosti požadavků, blokování IP adres a ochrana před některými typy útoků (například DDoS na úrovni HTTP).
- Oddělení odpovědností: Nginx se stará o infrastrukturní úkoly (obsluha HTTP, SSL), což umožňuje Ruby aplikaci soustředit se na obchodní logiku.
Příklad konfigurace Nginx pro proxy na Unicorn:
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://unix:/path/to/your/app/tmp/sockets/unicorn.sock;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Volitelné: přímo obsluhovat statické soubory
location ~* \.(css|js|jpg|jpeg|gif|png|html)$ {
root /path/to/your/app/public;
expires 1d;
}
}