


NGINX avec Node.js : équilibrage de charge, diffusion de contenu statique et SSL
NGINX est un serveur Web puissant et polyvalent qui joue un rôle essentiel dans la mise à l'échelle des applications Node.js. Il est couramment utilisé comme proxy inverse pour gérer l'équilibrage de charge, diffuser du contenu statique et gérer la terminaison SSL. Dans cet article, nous explorerons comment utiliser NGINX avec Node.js, en expliquant le fonctionnement de chacune de ces fonctions avec des exemples pratiques.
Pourquoi utiliser NGINX avec Node.js ?
Bien que Node.js excelle dans la création d'applications évolutives basées sur des événements, ce n'est peut-être pas le moyen le plus efficace de gérer des tâches telles que l'équilibrage de charge, la diffusion de contenu statique ou la terminaison SSL. C'est là qu'intervient NGINX. NGINX est optimisé pour gérer efficacement un grand nombre de connexions simultanées, ce qui en fait le compagnon idéal pour les applications Node.js qui doivent évoluer.
Principaux avantages de l'utilisation de NGINX avec Node.js :
- Équilibrage de charge : NGINX peut répartir le trafic sur plusieurs instances Node.js, garantissant ainsi qu'aucun serveur n'est submergé.
- Servir du contenu statique : il sert efficacement les fichiers statiques (par exemple, CSS, JS, images), permettant à Node.js de se concentrer sur le contenu dynamique.
- Terminaison SSL : NGINX gère le cryptage et le déchiffrement SSL/TLS, réduisant ainsi la charge sur Node.js.
1. Équilibrage de charge avec NGINX
Lors d'une mise à l'échelle horizontale, vous devrez exécuter plusieurs instances de votre application Node.js. NGINX peut répartir le trafic entrant sur ces instances, garantissant ainsi une charge uniforme.
Étape 1 : Installer NGINX
Sur un système Ubuntu, vous pouvez installer NGINX avec la commande suivante :
sudo apt update sudo apt install nginx
Étape 2 : Configuration NGINX pour l'équilibrage de charge
Le fichier nginx.conf est l'endroit où vous définissez comment NGINX gère les requêtes entrantes. Voici comment configurer NGINX pour équilibrer la charge sur trois instances Node.js.
http { upstream node_app { server 127.0.0.1:3000; server 127.0.0.1:3001; server 127.0.0.1:3002; } server { listen 80; location / { proxy_pass http://node_app; 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; } } }
Explication :
- Le bloc en amont définit le pool d'instances Node.js entre lesquelles NGINX équilibrera le trafic.
- La directive proxy_pass transmet les requêtes à l'une des instances Node.js.
Étape 3 : démarrer plusieurs instances Node.js
node app.js --port 3000 & node app.js --port 3001 & node app.js --port 3002 &
Étape 4 : démarrez NGINX
Une fois NGINX configuré, démarrez-le en utilisant :
sudo systemctl start nginx
Tester la configuration :
Désormais, la visite de l'adresse IP ou du domaine de votre serveur devrait répartir les requêtes entre les trois instances Node.js.
2. Servir du contenu statique avec NGINX
Les applications Node.js doivent souvent servir des fichiers statiques (comme des images, CSS et JavaScript). NGINX est beaucoup plus efficace dans cette tâche, car il est conçu pour gérer un grand nombre de requêtes de fichiers statiques.
Étape 1 : Configuration NGINX pour les fichiers statiques
Modifiez le fichier nginx.conf pour définir un emplacement pour le contenu statique.
server { listen 80; # Serve static content directly location /static/ { root /var/www/html; } # Proxy dynamic requests to Node.js location / { proxy_pass http://localhost:3000; 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; } }
Explication :
- Le bloc location /static/ indique à NGINX de servir les fichiers de /var/www/html/static/ lorsque des requêtes sont adressées à /static/.
- D'autres requêtes sont transmises par proxy à l'application Node.js.
Étape 2 : déplacer les fichiers statiques
Déplacez vos fichiers statiques (par exemple, images, CSS, JavaScript) vers le répertoire /var/www/html/static/.
sudo mkdir -p /var/www/html/static sudo cp -r path/to/static/files/* /var/www/html/static/
Désormais, les demandes de ressources /static seront traitées directement par NGINX, améliorant ainsi les performances de votre serveur Node.js.
3. Résiliation SSL avec NGINX
SSL (Secure Sockets Layer) est essentiel pour sécuriser la communication entre vos utilisateurs et votre application. NGINX peut décharger les demandes de terminaison, de cryptage et de déchiffrement SSL, de sorte que votre application Node.js n'a pas besoin de gérer SSL elle-même.
Étape 1 : Obtenez un certificat SSL
Vous pouvez obtenir un certificat SSL gratuitement grâce à Let's Encrypt :
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.com
Étape 2 : Configuration SSL NGINX
Une fois le certificat SSL émis, vous pouvez configurer NGINX pour gérer le trafic SSL.
server { listen 80; server_name yourdomain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; location / { proxy_pass http://localhost:3000; 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; } }
Explication :
- Le premier bloc du serveur redirige tout le trafic HTTP vers HTTPS.
- Le deuxième bloc écoute sur le port 443 (HTTPS), gérant le cryptage SSL avec le certificat émis par Let's Encrypt.
Étape 3 : tester la configuration SSL
Visitez votre domaine (par exemple, https://votredomaine.com) et votre application Node.js devrait maintenant être diffusée via HTTPS.
Configurations NGINX supplémentaires pour l'optimisation de Node.js
1. Gestion des délais d'attente
Pour éviter que les requêtes de longue durée ne soient fermées prématurément, configurez les paramètres de délai d'attente de NGINX.
server { proxy_read_timeout 90s; proxy_send_timeout 90s; send_timeout 90s; }
2. Rate Limiting
Rate limiting can help prevent abuse and manage high traffic by limiting the number of requests a user can make in a given time.
http { limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; server { location / { limit_req zone=mylimit burst=5; proxy_pass http://localhost:3000; } } }
Explanation:
- The limit_req_zone directive defines a rate limit of 1 request per second.
- The burst parameter allows a small number of requests to exceed the limit before throttling kicks in.
Conclusion
NGINX is a powerful tool that can significantly enhance the performance, security, and scalability of your Node.js applications. By offloading tasks such as load balancing, serving static content, and handling SSL termination to NGINX, your Node.js server can focus on what it does best: processing dynamic content and handling real-time events.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Le choix de Python ou JavaScript doit être basé sur le développement de carrière, la courbe d'apprentissage et l'écosystème: 1) le développement de carrière: Python convient à la science des données et au développement de back-end, tandis que JavaScript convient au développement frontal et complet. 2) Courbe d'apprentissage: la syntaxe Python est concise et adaptée aux débutants; La syntaxe JavaScript est flexible. 3) Ecosystème: Python possède de riches bibliothèques informatiques scientifiques, et JavaScript a un puissant cadre frontal.

La puissance du cadre JavaScript réside dans la simplification du développement, l'amélioration de l'expérience utilisateur et les performances des applications. Lorsque vous choisissez un cadre, considérez: 1. Taille et complexité du projet, 2. Expérience d'équipe, 3. Écosystème et soutien communautaire.

INTRODUCTION Je sais que vous pouvez le trouver étrange, que doit faire exactement JavaScript, C et Browser? Ils semblent sans rapport, mais en fait, ils jouent un rôle très important dans le développement Web moderne. Aujourd'hui, nous discuterons du lien étroit entre ces trois. Grâce à cet article, vous apprendrez comment JavaScript fonctionne dans le navigateur, le rôle de C dans le moteur du navigateur et comment ils fonctionnent ensemble pour stimuler le rendu et l'interaction des pages Web. Nous connaissons tous la relation entre JavaScript et Browser. JavaScript est la langue principale du développement frontal. Il fonctionne directement dans le navigateur, rendant les pages Web vives et intéressantes. Vous êtes-vous déjà demandé pourquoi javascr

Node.js excelle dans des E / S efficaces, en grande partie grâce aux flux. Streams traite les données progressivement, en évitant la surcharge de mémoire - idéal pour les fichiers volumineux, les tâches réseau et les applications en temps réel. Combiner les flux avec la sécurité de type dactylographié crée un powe

Les différences de performance et d'efficacité entre Python et JavaScript se reflètent principalement dans: 1) comme un langage interprété, Python fonctionne lentement mais a une efficacité de développement élevée et convient au développement rapide des prototypes; 2) JavaScript est limité au thread unique dans le navigateur, mais les E / S multi-threading et asynchrones peuvent être utilisées pour améliorer les performances dans Node.js, et les deux ont des avantages dans les projets réels.

JavaScript est originaire de 1995 et a été créé par Brandon Ike, et a réalisé que la langue en langue C. 1.C offre des capacités de programmation élevées et au niveau du système pour JavaScript. 2. La gestion de la mémoire de JavaScript et l'optimisation des performances reposent sur le langage C. 3. La fonctionnalité multiplateforme du langage C aide JavaScript à s'exécuter efficacement sur différents systèmes d'exploitation.

JavaScript s'exécute dans les navigateurs et les environnements Node.js et s'appuie sur le moteur JavaScript pour analyser et exécuter du code. 1) Générer une arborescence de syntaxe abstraite (AST) au stade d'analyse; 2) Convertir AST en bytecode ou code machine à l'étape de compilation; 3) Exécutez le code compilé à l'étape d'exécution.

Les tendances futures de Python et JavaScript incluent: 1. Python consolidera sa position dans les domaines de l'informatique scientifique et de l'IA, 2. JavaScript favorisera le développement de la technologie Web, 3. Le développement de plate-forme multiplié deviendra un sujet brûlant, et 4. L'optimisation des performances sera le focus. Les deux continueront d'étendre les scénarios d'application dans leurs champs respectifs et de faire plus de percées dans les performances.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire
