Sobes.tech
Middle

Miks installida Nginx enne Ruby?

sobes.tech AI

Vastus AI-lt

Nginx paigaldatakse enne Ruby rakendust (näiteks Rails või Sinatra) järgmistel põhjustel:

  1. Statiliste failide teenindamine: Nginx tõhusalt (kiiremini ja vähem ressursse kasutades) teenindab statilisi faile (CSS, JS, pildid), vabastades Ruby protsessid dünaamiliste päringute töötlemiseks.
  2. Tagasiproksi teenus: Nginx toimib tagasiproksina, võttes vastu kõik sissetulevad HTTP-päringud ja suunates need Ruby serveritesse (näiteks Puma, Unicorn) protokolli kaudu (näiteks HTTP või Unix Domain Socket). See võimaldab hallata mitut Ruby protsessi ja jaotada koormust.
  3. SSL/TLS terminatsioon: Nginx saab töödelda krüpteeritud SSL/TLS ühendusi, kergendades Ruby rakenduse ülesannet.
  4. Vahemälu: Nginx saab vahemällu salvestada vastuseid, kiirendades sageli nõutava sisu edastamist.
  5. Pakkimine: Nginx saab pakkida vastuseid (gzip, brotli), vähendades edastatavate andmete mahtu.
  6. Koormuse jaotamine: Nginx saab jaotada sissetulevad päringud mitme Ruby rakenduse eksemplari vahel, suurendades kättesaadavust ja skaleeritavust.
  7. Logimine: Nginx pakub võimsaid võimalusi HTTP-päringute logimiseks.
  8. Turvalisus: Nginx saab teostada põhifunktsioone turvalisuse tagamiseks, näiteks kiiruse piirangud, IP-aadresside blokeerimine ja teatud rünnakutüüpide (näiteks DDoS HTTP tasemel) kaitse.
  9. Vastutuse jagamine: Nginx tegeleb infrastruktuuriliste ülesannetega (HTTP, SSL teenindamine), võimaldades Ruby rakendusel keskenduda äriloogikale.

Näide Unicorni jaoks Nginx konfiguratsioonist:

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;
    }

    # Valikuline: teenindada otse statilisi faile
    location ~* \.(css|js|jpg|jpeg|gif|png|html)$ {
        root /path/to/your/app/public;
        expires 1d;
    }
}