Accélérer Node.js, Socket.io temps de chargement de l'application Web en tirant parti de Nginx pour servir des fichiers statiques
Node.js est un excellent environnement d'exécution JavaScript, que vous pouvez utiliser pour servir des actifs Web entiers (statique + dynamique) à partir de cela.
Si vous travaillez sur un petit projet expérimental, alors c'est probablement ok, cependant, si le temps de réponse est concerné, vous devez envisager d'utiliser un serveur Web comme Nginx devant Node.js pour servir des fichiers statiques.
En fait, non seulement pour servir des fichiers statiques, mais aussi à partir d'un point de vue de la sécurité vous devriez envisager Nginx.
Dernièrement, je travaillais sur Outils Geekflare (Website SEO & Security Analyzer) où j'ai utilisé Node.js, Socket.io, et j'ai pu améliorer important temps de réponse en déchargeant les fichiers statiques de Nginx.
Comme vous pouvez le voir, lorsque j'ai déplacé les fichiers statiques vers Nginx le 29th, le temps de réponse est drastiquement diminué.
Donc, si vous utilisez Node.js pour fournir une image, js, CSS, police, etc., réfléchissez et envisagez de séparer les tâches.
Voyons comment j'ai fait cela.
Cela suppose que vous avez Nginx et Node.js installée. Effectuez une sauvegarde de la configuration existante avant de la modifier afin de pouvoir revenir en arrière en cas de problème.
- Accédez à l'emplacement où Nginx est installé (par défaut sur un système d'exploitation UNIX tel que CentOS / Ubuntu serait / etc / nginx)
- Accéder aux sites disponibles
- Créez un nouveau fichier avec les éléments suivants (pour une meilleure compréhension, vous pouvez nommer le fichier comme votre nom de domaine)
upstream backend {
server localhost:3000;
}
server {
listen 80;
server_name siterelic.com;
root /var/tools/public;
location / {
try_files $uri @backend;
}
location @backend {
proxy_pass http://backend;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Following is necessary for Websocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Il y a les cinq blocs cruciaux ci-dessus, permettez-moi de passer en revue un par un.
- En amont - spécifiez la variable comme «backend» et donnez les informations de serveur et de port de node.js. Dans un exemple, j'ai donné localhost: 3000, ce qui signifie que j'exécute node.js sur le même serveur comme Nginx avec un numéro de port 3000.
- Serveur - indiquez le numéro de port sur lequel Nginx doit écouter et le nom du serveur comme nom de domaine.
- Root - le répertoire à partir duquel vous souhaitez servir les fichiers statiques.
- Emplacement - c'est important. Je demande à Nginx d'essayer de rechercher des fichiers dans le répertoire spécifié avec l'emplacement racine et si cela ne correspond pas, allez à @backend qui est node.js
- Location@backend - il s'agit de la configuration générique du proxy node.js+websocket.io
Activer le site dans /etc/nginx/sites-enabled
en créant une symbolique
cd /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/$yourdomainname .
Redémarrez le Nginx et amusez-vous!
Avec la configuration ci-dessus, j'ai pu améliorer temps de réponse de manière significative, et j'espère que vous devriez aussi.
Si vous êtes nouveau sur Nginx, vous voudrez peut-être apprendre à créer un serveur Nginx hautes performances à partir de zéro.