Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Comment configurer Nginx pour servir des fichiers statiques pour Node.js?

nginx
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

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.

aws-lb

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.

Merci à nos commanditaires
Plus de bonnes lectures sur Nginx
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder