Middle
Prečo inštalovať Nginx pred Ruby?
sobes.tech AI
Odpoveď od AI
Nginx sa inštaluje pred Ruby aplikáciou (napríklad Rails alebo Sinatra) z nasledujúcich dôvodov:
- Obsluha statických súborov: Nginx efektívne (rýchlejšie a s menším využitím zdrojov) poskytuje statické súbory (CSS, JS, obrázky), čím uvoľňuje Ruby procesy na spracovanie dynamických požiadaviek.
- Reverse proxy: Nginx funguje ako reverzný proxy, prijíma všetky prichádzajúce HTTP požiadavky a ich presmeruje na Ruby servery (napríklad Puma, Unicorn) cez protokol (napríklad HTTP alebo Unix Domain Socket). To umožňuje spravovať viac Ruby procesov a vyvažovať záťaž.
- SSL/TLS terminácia: Nginx môže spracovávať šifrované SSL/TLS spojenia, odľahčujúc Ruby aplikáciu od tejto úlohy.
- Caching: Nginx môže ukladať odpovede do cache, čo zrýchľuje doručovanie často požadovaného obsahu.
- Komprimácia: Nginx môže komprimovať odpovede (gzip, brotli), znižujúc objem prenášaných dát.
- Vyvažovanie záťaže: Nginx môže rozdeľovať prichádzajúce požiadavky medzi viac inštancií Ruby aplikácie, zvyšujúc dostupnosť a škálovateľnosť.
- Logovanie: Nginx ponúka výkonné možnosti logovania HTTP požiadaviek.
- Bezpečnosť: Nginx môže vykonávať základné bezpečnostné funkcie, ako je obmedzenie rýchlosti požiadaviek, blokovanie IP adries a ochrana pred niektorými typmi útokov (napríklad DDoS na úrovni HTTP).
- Oddelenie zodpovedností: Nginx sa zaoberá infraštruktúrnymi úlohami (obsluha HTTP, SSL), čo umožňuje Ruby aplikácii sústrediť sa na biznis logiku.
Príklad konfigurácie Nginx pre 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;
}
# Voliteľné: priamy servis statických aktív
location ~* \.(css|js|jpg|jpeg|gif|png|html)$ {
root /path/to/your/app/public;
expires 1d;
}
}