Middle
Zašto instalirati Nginx pre Ruby?
sobes.tech АИ
Одговор од АИ
Nginx se instalira pre Ruby aplikacije (npr. Rails ili Sinatra) iz sledećih razloga:
- Servis statičkih fajlova: Nginx efikasno (brže i sa manje resursa) isporučuje statičke fajlove (CSS, JS, slike), oslobađajući Ruby procese za obradu dinamičkih zahteva.
- Obrnuti proxy: Nginx funkcioniše kao obrnuti proxy, prihvata sve dolazne HTTP zahteve i prosleđuje ih Ruby serverima (npr. Puma, Unicorn) putem protokola (npr. HTTP ili Unix Domain Socket). Ovo omogućava upravljanje više Ruby procesa i balansiranje opterećenja.
- SSL/TLS terminacija: Nginx može da rukuje šifrovanim SSL/TLS vezama, rasterećujući Ruby aplikaciju od tog zadatka.
- Keširanje: Nginx može keširati odgovore, ubrzavajući isporuku često traženog sadržaja.
- Kompresija: Nginx može kompresovati odgovore (gzip, brotli), smanjujući obim prenesenih podataka.
- Balansiranje opterećenja: Nginx može rasporediti dolazne zahteve između više instanci Ruby aplikacije, povećavajući dostupnost i skalabilnost.
- Logovanje: Nginx pruža moćne mogućnosti za logovanje HTTP zahteva.
- Bezbednost: Nginx može obavljati osnovne funkcije bezbednosti, kao što su ograničenje brzine zahteva, blokiranje IP adresa i zaštita od određenih vrsta napada (npr. DDoS na nivou HTTP).
- Razdvajanje odgovornosti: Nginx se bavi infrastrukturnim zadacima (upravljanje HTTP, SSL), omogućavajući Ruby aplikaciji da se fokusira na poslovnu logiku.
Primer konfiguracije Nginx za 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;
}
# Opcionalno: direktno posluživanje statičkih resursa
location ~* \.(css|js|jpg|jpeg|gif|png|html)$ {
root /path/to/your/app/public;
expires 1d;
}
}