"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > NGINX pour les applications Node.js : quoi, pourquoi et comment l'utiliser

NGINX pour les applications Node.js : quoi, pourquoi et comment l'utiliser

Publié le 2024-11-04
Parcourir:312

NGINX for Node.js Applications: What, Why, and How to Use It

Quand il s'agit de faire évoluer et d'optimiser les applications Node.js, NGINX joue un rôle essentiel dans la gestion d'un trafic élevé, en servant efficacement les fichiers statiques et en agissant comme un équilibreur de charge. NGINX, un serveur Web hautes performances, peut également fonctionner comme un proxy inverse, lui permettant de distribuer les requêtes sur plusieurs serveurs. Dans cet article, nous expliquerons ce qu'est NGINX, pourquoi vous devriez l'utiliser avec Node.js et comment configurer NGINX pour diverses tâches, notamment le proxy inverse, l'équilibrage de charge et la diffusion de contenu statique.

Qu’est-ce que NGINX ?

NGINX (prononcé « Engine X ») est un puissant serveur Web et proxy inverse conçu pour gérer un grand nombre de connexions simultanées avec des performances élevées. Initialement créé en tant que serveur Web, la polyvalence de NGINX l'a étendu à l'équilibrage de charge, au proxy inverse et au service de fichiers statiques.

Pourquoi utiliser NGINX avec Node.js ?

  • Équilibrage de charge efficace : NGINX peut répartir le trafic sur plusieurs instances Node.js, améliorant ainsi l'évolutivité.
  • Proxy inverse : agit comme un serveur intermédiaire entre les clients et les serveurs backend Node.js, aidant à masquer l'architecture des applications et à équilibrer les demandes.
  • Gestion du contenu statique : NGINX peut servir des fichiers statiques tels que des images, CSS et JavaScript, libérant Node.js de cette tâche et améliorant les performances.
  • Terminaison SSL : NGINX peut gérer le cryptage SSL (TLS), soulageant Node.js du fardeau et améliorant la sécurité.

Configuration de NGINX avec Node.js

Pour configurer NGINX pour Node.js, suivez ces étapes :

Étape 1 : Installer NGINX

Tout d'abord, vous devez installer NGINX sur votre serveur. Utilisez les commandes suivantes en fonction de votre système d'exploitation :

Pour Ubuntu/Debian :

sudo apt update
sudo apt install nginx

Pour CentOS/RHEL :

sudo yum install nginx

Après l'installation, vous pouvez démarrer NGINX avec la commande suivante :

sudo systemctl start nginx

Vous pouvez vérifier que NGINX est en cours d'exécution en visitant l'adresse IP de votre serveur dans un navigateur. Si NGINX fonctionne, vous verrez une page de bienvenue NGINX par défaut.

Étape 2 : configurer NGINX en tant que proxy inverse pour Node.js

Pour activer NGINX en tant que proxy inverse, lui permettant de transmettre les demandes des clients vers une application Node.js, nous devons configurer NGINX en conséquence.

Voici un exemple de configuration NGINX pour une application Node.js exécutée sur localhost:3000.

  1. Accédez au répertoire de configuration NGINX :
   cd /etc/nginx/sites-available/
  1. Créez un nouveau fichier de configuration NGINX pour votre application Node.js :
   sudo nano nodeapp.conf
  1. Ajoutez la configuration suivante :
server {
    listen 80;
    server_name your_domain_or_IP;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  1. Activez la configuration en créant un lien symbolique vers le répertoire activé pour les sites :
   sudo ln -s /etc/nginx/sites-available/nodeapp.conf /etc/nginx/sites-enabled/
  1. Testez la configuration NGINX pour les erreurs de syntaxe :
   sudo nginx -t
  1. Si tout va bien, redémarrez NGINX :
   sudo systemctl restart nginx

Cette configuration acheminera tout le trafic entrant sur le port 80 vers votre application Node.js exécutée sur le port 3000.

NGINX comme équilibreur de charge pour Node.js

Lorsque votre application Node.js se développe, une seule instance peut ne pas suffire à gérer le trafic. NGINX peut être configuré en tant qu'équilibreur de charge, distribuant le trafic sur plusieurs instances Node.js.

Voici comment configurer NGINX pour l'équilibrage de charge :

  1. Créez ou modifiez votre fichier de configuration NGINX (nodeapp.conf) :
   sudo nano /etc/nginx/sites-available/nodeapp.conf
  1. Ajoutez la configuration suivante pour activer l'équilibrage de charge :
upstream node_backend {
    server localhost:3000;
    server localhost:3001;
    server localhost:3002;
}

server {
    listen 80;
    server_name your_domain_or_IP;

    location / {
        proxy_pass http://node_backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  1. Enregistrez le fichier, testez la configuration et redémarrez NGINX :
sudo nginx -t
sudo systemctl restart nginx

Explication:

  • Le bloc en amont définit plusieurs serveurs Node.js (localhost :3000, localhost :3001 et localhost :3002), et NGINX équilibrera le trafic entrant sur ces serveurs.
  • NGINX utilise un algorithme round-robin par défaut, envoyant des requêtes à chaque serveur tour à tour.

Cette configuration répartit la charge uniformément sur plusieurs instances Node.js, améliorant ainsi l'évolutivité et la tolérance aux pannes.

Servir du contenu statique avec NGINX

La diffusion de fichiers statiques tels que des images, CSS et JavaScript peut surcharger votre application Node.js. NGINX peut se décharger de cette responsabilité, en améliorant les performances en servant directement les actifs statiques.

  1. Créez un répertoire pour vos fichiers statiques (par exemple, /var/www/html/static/) :
   sudo mkdir -p /var/www/html/static
  1. Déplacez vos fichiers statiques (CSS, images, JS) dans ce répertoire.

  2. Mettez à jour votre configuration NGINX (nodeapp.conf) pour servir les fichiers statiques :

server {
    listen 80;
    server_name your_domain_or_IP;

    location /static/ {
        root /var/www/html;
    }

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  1. Testez la configuration et redémarrez NGINX :
sudo nginx -t
sudo systemctl restart nginx

Explication:

  • Les requêtes de fichiers statiques (par exemple, votre_domaine_ou_IP/static/style.css) seront traitées directement par NGINX à partir du répertoire /var/www/html/static/, réduisant ainsi la charge sur votre serveur Node.js.

Résiliation SSL avec NGINX

Une communication sécurisée entre les clients et les serveurs est cruciale, et SSL (Secure Sockets Layer) assure ce cryptage. NGINX peut gérer la terminaison SSL, ce qui signifie qu'il gère le cryptage et le déchiffrement des requêtes HTTPS avant de les transmettre à l'application Node.js.

Voici comment configurer SSL avec NGINX :

  1. Obtenez un certificat SSL. Vous pouvez obtenir un certificat SSL gratuit auprès de Let's Encrypt ou utiliser toute autre autorité de certification.

  2. Modifiez votre configuration NGINX pour activer SSL :

server {
    listen 443 ssl;
    server_name your_domain_or_IP;

    ssl_certificate /etc/ssl/certs/your_domain.crt;
    ssl_certificate_key /etc/ssl/private/your_domain.key;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    listen 80;
    server_name your_domain_or_IP;

    # Redirect all HTTP requests to HTTPS
    return 301 https://$host$request_uri;
}
  1. Testez et redémarrez NGINX :
sudo nginx -t
sudo systemctl restart nginx

Explication:

  • La directive SSL Listen 443 garantit que NGINX écoute le trafic HTTPS.
  • ssl_certificate et ssl_certificate_key spécifient les chemins d'accès à votre certificat SSL et à votre clé privée.
  • Une redirection de HTTP vers HTTPS garantit que tout le trafic utilise SSL.

Conclusion

NGINX est un outil puissant pour améliorer les performances, l'évolutivité et la sécurité de vos applications Node.js. De l'équilibrage de charge à la gestion des fichiers statiques et à la gestion de la terminaison SSL, NGINX décharge de nombreuses tâches de Node.js, permettant à votre application de se concentrer sur ce qu'elle fait de mieux : gérer la logique métier. Avec les configurations fournies dans cet article, vous pouvez configurer NGINX pour améliorer l'efficacité et la fiabilité de votre application Node.js.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/imsushant12/nginx-for-nodejs-applications-what-why-and-how-to-use-it-1gbn?1 En cas de violation, veuillez contacter study_golang @163.com supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3