Sobes.tech
Middle

Pourquoi installer Nginx avant Ruby?

sobes.tech IA

Réponse de l'IA

Nginx s’installe devant l’application Ruby (par exemple, Rails ou Sinatra) pour les raisons suivantes :

  1. Service des fichiers statiques : Nginx sert efficacement (plus rapidement et avec moins de ressources) les fichiers statiques (CSS, JS, images), libérant ainsi les processus Ruby pour traiter les requêtes dynamiques.
  2. Proxy inverse : Nginx agit en tant que proxy inverse, acceptant toutes les requêtes HTTP entrantes et les redirigeant vers les serveurs Ruby (par exemple, Puma, Unicorn) via un protocole (par exemple, HTTP ou socket Unix). Cela permet de gérer plusieurs processus Ruby et d’équilibrer la charge entre eux.
  3. Terminaison SSL/TLS : Nginx peut gérer les connexions SSL/TLS chiffrées, déchargeant la tâche à l’application Ruby.
  4. Caching : Nginx peut mettre en cache les réponses, accélérant la livraison du contenu fréquemment demandé.
  5. Compression : Nginx peut compresser les réponses (gzip, brotli), réduisant la taille des données transmises.
  6. Répartition de charge : Nginx peut distribuer les requêtes entrantes entre plusieurs instances de l’application Ruby, augmentant la disponibilité et la scalabilité.
  7. Journalisation : Nginx offre de puissantes fonctionnalités de journalisation des requêtes HTTP.
  8. Sécurité : Nginx peut effectuer des fonctions de sécurité de base, telles que limiter la vitesse des requêtes, bloquer des adresses IP et protéger contre certains types d’attaques (par exemple, DDoS au niveau HTTP).
  9. Séparation des responsabilités : Nginx gère les tâches d’infrastructure (gestion HTTP, SSL), permettant à l’application Ruby de se concentrer sur la logique métier.

Exemple de configuration Nginx pour proxy vers 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;
    }

    # Optionnel : servir directement les assets statiques
    location ~* \.(css|js|jpg|jpeg|gif|png|html)$ {
        root /path/to/your/app/public;
        expires 1d;
    }
}