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.
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 ?
Pour configurer NGINX pour Node.js, suivez ces étapes :
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.
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.
cd /etc/nginx/sites-available/
sudo nano nodeapp.conf
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; } }
sudo ln -s /etc/nginx/sites-available/nodeapp.conf /etc/nginx/sites-enabled/
sudo nginx -t
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.
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 :
sudo nano /etc/nginx/sites-available/nodeapp.conf
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; } }
sudo nginx -t sudo systemctl restart nginx
Explication:
Cette configuration répartit la charge uniformément sur plusieurs instances Node.js, améliorant ainsi l'évolutivité et la tolérance aux pannes.
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.
sudo mkdir -p /var/www/html/static
Déplacez vos fichiers statiques (CSS, images, JS) dans ce répertoire.
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; } }
sudo nginx -t sudo systemctl restart nginx
Explication:
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 :
Obtenez un certificat SSL. Vous pouvez obtenir un certificat SSL gratuit auprès de Let's Encrypt ou utiliser toute autre autorité de certification.
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; }
sudo nginx -t sudo systemctl restart nginx
Explication:
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.
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