Sobes.tech
Middle

Waarom Nginx vóór Ruby installeren?

sobes.tech AI

Antwoord van AI

Nginx wordt vóór de Ruby-toepassing geïnstalleerd (bijvoorbeeld Rails of Sinatra) om de volgende redenen:

  1. Serveren van statische bestanden: Nginx levert statische bestanden (CSS, JS, afbeeldingen) efficiënt (snel en met minder bronnen), waardoor Ruby-processen vrijgemaakt worden voor het verwerken van dynamische verzoeken.
  2. Reverse proxy: Nginx fungeert als reverse proxy, accepteert alle inkomende HTTP-verzoeken en stuurt ze door naar Ruby-servers (bijvoorbeeld Puma, Unicorn) via een protocol (bijvoorbeeld HTTP of Unix Domain Socket). Dit maakt het beheer van meerdere Ruby-processen en load balancing mogelijk.
  3. SSL/TLS terminatie: Nginx kan versleutelde SSL/TLS-verbindingen afhandelen, waardoor de Ruby-toepassing ontlast wordt.
  4. Caching: Nginx kan antwoorden cachen, wat de levering van vaak opgevraagde inhoud versnelt.
  5. Compressie: Nginx kan antwoorden comprimeren (gzip, brotli), waardoor de hoeveelheid overgedragen data vermindert.
  6. Load balancing: Nginx kan inkomende verzoeken verdelen over meerdere exemplaren van de Ruby-toepassing, wat de beschikbaarheid en schaalbaarheid verhoogt.
  7. Logging: Nginx biedt krachtige mogelijkheden voor het loggen van HTTP-verzoeken.
  8. Beveiliging: Nginx kan basisbeveiligingsfuncties uitvoeren, zoals het beperken van de snelheid van verzoeken, IP-adressen blokkeren en bescherming bieden tegen bepaalde soorten aanvallen (bijvoorbeeld DDoS op HTTP-niveau).
  9. Verantwoordelijkheden scheiden: Nginx verzorgt infrastructuurtaken (HTTP, SSL), waardoor de Ruby-toepassing zich kan richten op de bedrijfslogica.

Voorbeeldconfiguratie van Nginx voor proxy naar 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;
    }

    # Optioneel: serveer statische assets direct
    location ~* \.(css|js|jpg|jpeg|gif|png|html)$ {
        root /path/to/your/app/public;
        expires 1d;
    }
}