Middle
Kodėl reikia įdiegti Nginx prieš Ruby?
sobes.tech AI
Atsakymas iš AI
Nginx įdiegiama prieš Ruby programą (pavyzdžiui, Rails ar Sinatra) dėl šių priežasčių:
- Statinių failų aptarnavimas: Nginx efektyviai (greičiau ir su mažesniais ištekliais) teikia statinius failus (CSS, JS, paveikslėlius), atlaisvindamas Ruby procesus dinamiškiems užklausoms apdoroti.
- Atgalinis proxy: Nginx veikia kaip atgalinis proxy, priima visus įeinančius HTTP užklausimus ir nukreipia juos į Ruby serverius (pavyzdžiui, Puma, Unicorn) per protokolą (pavyzdžiui, HTTP arba Unix Domain Socket). Tai leidžia valdyti kelis Ruby procesus ir paskirstyti apkrovą.
- SSL/TLS terminavimas: Nginx gali apdoroti šifruotus SSL/TLS ryšius, sumažindamas Ruby programos naštą.
- Talpykla: Nginx gali talpinti atsakymus, pagreitindamas dažnai užklausiamą turinį.
- Suspaudimas: Nginx gali suspausti atsakymus (gzip, brotli), sumažindamas perduodamų duomenų kiekį.
- Našumo paskirstymas: Nginx gali paskirstyti įeinančias užklausas tarp kelių Ruby programos egzempliorių, didinant prieinamumą ir mastelį.
- Žurnalo įrašymas: Nginx siūlo galingas galimybes HTTP užklausų žurnalo įrašymui.
- Saugumas: Nginx gali atlikti pagrindines saugumo funkcijas, tokias kaip greičio ribojimas, IP adresų blokavimas ir apsauga nuo tam tikrų atakų (pavyzdžiui, DDoS HTTP lygyje).
- Atsakomybės pasidalijimas: Nginx rūpinasi infrastruktūros užduotimis (HTTP, SSL aptarnavimas), leidžiant Ruby programai susitelkti į verslo logiką.
Pavyzdinė Nginx konfigūracija Unicorn priekiniam serveriui:
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;
}
# Pasirinktinai: tiesiogiai aptarnauti statinius failus
location ~* \.(css|js|jpg|jpeg|gif|png|html)$ {
root /path/to/your/app/public;
expires 1d;
}
}