NGINX est un serveur HTTP hautes performances ainsi qu'un proxy inverse . Contrairement aux serveurs traditionnels, NGINX suit une architecture asynchrone pilotée par les événements. Par conséquent, l'empreinte mémoire est faible et les performances sont élevées. Si vous exécutez une application Web basée sur Node.js, vous devriez sérieusement envisager d'utiliser NGINX comme proxy inverse.
NGINX peut être très efficace pour servir des ressources statiques. Pour toutes les autres demandes, il communiquera avec votre backend Node.js et enverra la réponse au client. Dans ce didacticiel, nous allons voir comment configurer NGINX pour fonctionner avec Node.js. Nous verrons également comment configurer SSL sur le serveur NGINX.
Remarque: Le nœud possède également un module HTTPS intégré et peut être configuré pour lire les fichiers de certificat nécessaires sans avoir besoin d'un proxy inverse. Vous pouvez en savoir plus à ce sujet dans notre article Comment utiliser SSL / TLS avec Node.js .
Installation de NGINX
En supposant que Node.js soit déjà installé sur votre machine (sinon, vérifiez ici ), voyons comment installer NGINX.
Installation sous Linux
Si vous utilisez Ubuntu, vous pouvez utiliser la commande suivante pour installer NGINX:
sudo apt-get mise à jour
sudo apt-get install nginx
Si vous exécutez une distribution Linux autre qu'Ubuntu, consultez les documents d'installation de NGINX pour plus d'informations.
NGINX démarrera automatiquement une fois installé.
Installation sur macOS [19659007] Si vous êtes sous macOS, vous pouvez utiliser Homebrew pour installer NGINX facilement. Les étapes sont les suivantes:
-
Homebrew a besoin que le répertoire / usr / local
soit chown
’d à votre nom d’utilisateur. Donc, exécutez d'abord la commande suivante dans le terminal:
sudo chown -R 'username here' / usr / local
-
Les deux commandes suivantes vont maintenant installer NGINX sur votre système:
brew link pcre
installer brew nginx
-
Une fois l'installation terminée, vous pouvez taper la commande suivante pour démarrer NGINX:
sudo nginx
-
Le fichier de configuration NGINX se trouve ici: /usr/local/etc/nginx/nginx.conf
.
Installation sur Windows
Homebrew a besoin que le répertoire / usr / local
soit chown
’d à votre nom d’utilisateur. Donc, exécutez d'abord la commande suivante dans le terminal:
sudo chown -R 'username here' / usr / local
Les deux commandes suivantes vont maintenant installer NGINX sur votre système:
brew link pcre
installer brew nginx
Une fois l'installation terminée, vous pouvez taper la commande suivante pour démarrer NGINX:
sudo nginx
Le fichier de configuration NGINX se trouve ici: /usr/local/etc/nginx/nginx.conf
.
Pour Windows, rendez-vous sur le NGINX télécharge la page et récupère le zip. L'étape suivante consiste à décompresser l'archive et à passer au répertoire dans l'invite de commande comme suit:
décompressez nginx-1.3.13.zip
cd nginx-1.3.13
démarrer nginx
Comme vous pouvez le voir, la commande start nginx
démarrera NGINX.
Maintenant que l'installation est terminée, voyons comment configurer un serveur simple.
Configuration d'un nœud. js Server
Commençons par créer un simple serveur Node.js. Nous allons commencer par lancer un projet et installer le package Express :
mkdir node-demo && cd node-demo
npm init -y
npm j'exprime
Créez un fichier appelé server.js
avec le contenu suivant:
const express = require ('express')
const app = express ()
port const = 3000
app.get ('/', (req, res) => res.send ('Hello World!'))
app.listen (port, () => console.log (`Exemple d'application écoutant sur le port $ {port}!`))
Vous pouvez démarrer le serveur en exécutant node server.js
.
Configuration de NGINX
Ouvrons maintenant le fichier de configuration de site par défaut NGINX:
sudo nano / etc / nginx / sites disponibles / par défaut
Si vous le souhaitez, vous pouvez accéder directement au répertoire et ouvrir le fichier de configuration avec votre éditeur de texte préféré.
En faisant défiler vers le bas, vous trouverez un bloc serveur
. Cela ressemble à ceci:
serveur {
écouter 80;
nom_serveur localhost;
....
plus de config va ici
}
Ensuite, nous allons configurer le bloc serveur
en fonction de nos besoins. Nous voulons configurer NGINX pour transmettre toutes les demandes à notre serveur Node.js. Remplacez le bloc serveur
ci-dessus par un nouveau bloc comme indiqué ci-dessous:
serveur {
écouter 80;
nom_serveur localhost;
emplacement / {
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;
}
}
Comme vous pouvez le voir, le serveur Web écoutera sur le port http: // localhost
80
. Le bloc location /
indique à NGINX quoi faire avec toute demande entrante. Nous utilisons proxy_pass
pour pointer vers notre application Node.js, qui s'exécute à http: // localhost: 3000
dans notre cas.
À ce stade, vous devez enregistrer le fichier et tapez ce qui suit pour redémarrer NGINX, en fonction de votre système d'exploitation.
Ubuntu:
sudo service nginx restart
Ou:
sudo /etc/init.d/nginx restart
macOS:
sudo nginx -s stop && sudo nginx
Windows:
nginx -s rechargement
Une fois cela fait, vous pouvez aller sur http: // localhost pour voir notre proxy en action. Bien que vous accédiez au serveur Web NGINX, vous obtiendrez la réponse réelle du serveur Node.js.
Remarque: vous devrez vous assurer qu'il n'y a rien d'autre (comme Apache) en cours d'exécution sur le port 80.
Configuration de SSL
Afin de créer une connexion sécurisée avec le navigateur d'un utilisateur, nous devons obtenir un certificat numérique. Normalement, vous en obtenez un auprès d'une autorité de certification telle que Let's Encrypt . Si vous suivez la route Let's Encrypt, assurez-vous d'installer le certificat à l'aide de Certbot qui se chargera de reconfigurer NGINX pour vous.
Pour le développement local (et pour suivre ce didacticiel), vous pouvez crée également un certificat auto-signé . Le seul problème est que les navigateurs afficheront un avertissement indiquant que le «certificat n'est pas approuvé» lorsque quelqu'un visite votre site Web. Mais pour les tests sur votre machine locale, c'est très bien.
Une fois que vous avez un certificat et une clé privée, vous pouvez configurer SSL dans NGINX. Vous devez modifier notre bloc serveur précédent comme suit:
server {
écouter 80;
écouter 443 ssl;
nom_serveur localhost;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
emplacement / {
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;
}
}
C'est tout!
Maintenant, si vous accédez à https: // localhost votre connexion sera sécurisée. La configuration ci-dessus suppose que le certificat et la clé privée se trouvent respectivement dans /etc/nginx/ssl/server.crt
et /etc/nginx/ssl/server.key
mais vous
Bonus: Serving Static Assets
Un avantage supplémentaire de la configuration de NGINX devant notre serveur Node.js est que nous pouvons facilement le configurer pour servir tous les actifs statiques de notre application. a besoin. Cela évitera de surcharger le traitement de ces demandes de traitement de noeud.
Pour ce faire, nous devons ajouter un nouveau bloc d'emplacement
à la configuration du serveur:
server {
écouter 80;
nom_serveur localhost;
emplacement / {
...
}
emplacement / public {
root / usr / local / var / www;
}
}
Dans ce bloc de emplacement
nous définissons la racine sur / usr / local / var / www
mais vous pouvez choisir un répertoire différent si vous le souhaitez. Par conséquent, chaque fois qu'il y a une demande à quelque chose comme http: //localhost/public/somepath/file.html
NGINX servira le fichier de / usr / local / var / www / public /somepath/file.html
directement.
Conclusion
Dans ce bref didacticiel, nous avons vu comment utiliser NGINX comme proxy inverse pour notre application Node.js et configurer SSL. En utilisant NGINX pour gérer les ressources statiques, vous pouvez également réduire la charge de votre application Node.
Source link