„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > NGINX für Node.js-Anwendungen: Was, warum und wie man es verwendet

NGINX für Node.js-Anwendungen: Was, warum und wie man es verwendet

Veröffentlicht am 04.11.2024
Durchsuche:311

NGINX for Node.js Applications: What, Why, and How to Use It

Wenn es um die Skalierung und Optimierung von Node.js-Anwendungen geht, spielt NGINX eine entscheidende Rolle bei der Bewältigung von hohem Datenverkehr, der effizienten Bereitstellung statischer Dateien und der Funktion als Lastausgleicher. NGINX, ein Hochleistungs-Webserver, kann auch als Reverse-Proxy fungieren und so Anfragen auf mehrere Server verteilen. In diesem Artikel erfahren Sie, was NGINX ist, warum Sie es mit Node.js verwenden sollten und wie Sie NGINX für verschiedene Aufgaben konfigurieren, einschließlich Reverse-Proxying, Lastausgleich und Bereitstellung statischer Inhalte.

Was ist NGINX?

NGINX (ausgesprochen „Engine X“) ist ein leistungsstarker Webserver und Reverse-Proxy, der für die Verarbeitung einer großen Anzahl gleichzeitiger Verbindungen mit hoher Leistung entwickelt wurde. Ursprünglich als Webserver entwickelt, wurde NGINX aufgrund seiner Vielseitigkeit auf Lastausgleich, Reverse-Proxy und die Bereitstellung statischer Dateien erweitert.

Warum NGINX mit Node.js verwenden?

  • Effizienter Lastausgleich: NGINX kann den Datenverkehr auf mehrere Node.js-Instanzen verteilen und so die Skalierbarkeit verbessern.
  • Reverse Proxy: Fungiert als Zwischenserver zwischen Clients und Back-End-Node.js-Servern und hilft dabei, die Anwendungsarchitektur zu verbergen und Anfragen auszugleichen.
  • Verwaltung statischer Inhalte: NGINX kann statische Dateien wie Bilder, CSS und JavaScript bereitstellen, wodurch Node.js von dieser Aufgabe entlastet und die Leistung verbessert wird.
  • SSL-Terminierung: NGINX kann SSL (TLS)-Verschlüsselung verarbeiten, wodurch Node.js entlastet und die Sicherheit verbessert wird.

Einrichten von NGINX mit Node.js

Um NGINX für Node.js zu konfigurieren, befolgen Sie diese Schritte:

Schritt 1: Installieren Sie NGINX

Zuerst müssen Sie NGINX auf Ihrem Server installieren. Verwenden Sie je nach Betriebssystem die folgenden Befehle:

Für Ubuntu/Debian:

sudo apt update
sudo apt install nginx

Für CentOS/RHEL:

sudo yum install nginx

Nach der Installation können Sie NGINX mit dem folgenden Befehl starten:

sudo systemctl start nginx

Sie können überprüfen, ob NGINX ausgeführt wird, indem Sie die IP-Adresse Ihres Servers in einem Browser aufrufen. Wenn NGINX funktioniert, wird eine standardmäßige NGINX-Willkommensseite angezeigt.

Schritt 2: Konfigurieren Sie NGINX als Reverse Proxy für Node.js

Um NGINX als Reverse-Proxy zu aktivieren und Client-Anfragen an eine Node.js-Anwendung weiterzuleiten, müssen wir NGINX entsprechend konfigurieren.

Hier ist ein Beispiel einer NGINX-Konfiguration für eine Node.js-Anwendung, die auf localhost:3000 ausgeführt wird.

  1. Navigieren Sie zum NGINX-Konfigurationsverzeichnis:
   cd /etc/nginx/sites-available/
  1. Erstellen Sie eine neue NGINX-Konfigurationsdatei für Ihre Node.js-Anwendung:
   sudo nano nodeapp.conf
  1. Fügen Sie die folgende Konfiguration hinzu:
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;
    }
}
  1. Aktivieren Sie die Konfiguration, indem Sie einen Symlink zum Verzeichnis „sites-enabled“ erstellen:
   sudo ln -s /etc/nginx/sites-available/nodeapp.conf /etc/nginx/sites-enabled/
  1. Testen Sie die NGINX-Konfiguration auf Syntaxfehler:
   sudo nginx -t
  1. Wenn alles in Ordnung ist, starten Sie NGINX neu:
   sudo systemctl restart nginx

Dieses Setup leitet den gesamten eingehenden Datenverkehr auf Port 80 an Ihre Node.js-Anwendung weiter, die auf Port 3000 ausgeführt wird.

NGINX als Load Balancer für Node.js

Wenn Ihre Node.js-Anwendung wächst, reicht eine einzelne Instanz möglicherweise nicht aus, um den Datenverkehr zu bewältigen. NGINX kann als Load Balancer konfiguriert werden, der den Datenverkehr auf mehrere Node.js-Instanzen verteilt.

So können Sie NGINX für den Lastausgleich konfigurieren:

  1. Erstellen oder bearbeiten Sie Ihre NGINX-Konfigurationsdatei (nodeapp.conf):
   sudo nano /etc/nginx/sites-available/nodeapp.conf
  1. Fügen Sie die folgende Konfiguration hinzu, um den Lastausgleich zu aktivieren:
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;
    }
}
  1. Speichern Sie die Datei, testen Sie die Konfiguration und starten Sie NGINX neu:
sudo nginx -t
sudo systemctl restart nginx

Erläuterung:

  • Der Upstream-Block definiert mehrere Node.js-Server (localhost:3000, localhost:3001 und localhost:3002), und NGINX verteilt den eingehenden Datenverkehr auf diese Server.
  • NGINX verwendet standardmäßig einen Round-Robin-Algorithmus und sendet nacheinander Anfragen an jeden Server.

Dieses Setup verteilt die Last gleichmäßig auf mehrere Node.js-Instanzen und verbessert so die Skalierbarkeit und Fehlertoleranz.

Statische Inhalte mit NGINX bereitstellen

Die Bereitstellung statischer Dateien wie Bilder, CSS und JavaScript kann Ihre Node.js-Anwendung belasten. NGINX kann diese Verantwortung auslagern und die Leistung durch die direkte Bereitstellung statischer Assets verbessern.

  1. Erstellen Sie ein Verzeichnis für Ihre statischen Dateien (z. B. /var/www/html/static/):
   sudo mkdir -p /var/www/html/static
  1. Verschieben Sie Ihre statischen Dateien (CSS, Bilder, JS) in dieses Verzeichnis.

  2. Aktualisieren Sie Ihre NGINX-Konfiguration (nodeapp.conf), um statische Dateien bereitzustellen:

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;
    }
}
  1. Testen Sie die Konfiguration und starten Sie NGINX neu:
sudo nginx -t
sudo systemctl restart nginx

Erläuterung:

  • Anfragen für statische Dateien (z. B. Ihre_Domäne_oder_IP/static/style.css) werden von NGINX direkt aus dem Verzeichnis /var/www/html/static/ bedient, wodurch die Belastung Ihres Node.js-Servers reduziert wird.

SSL-Terminierung mit NGINX

Eine sichere Kommunikation zwischen Clients und Servern ist von entscheidender Bedeutung, und SSL (Secure Sockets Layer) sorgt für diese Verschlüsselung. NGINX kann die SSL-Terminierung verarbeiten, d. h. es übernimmt die Ver- und Entschlüsselung von HTTPS-Anfragen, bevor es diese an die Node.js-Anwendung weiterleitet.

So können Sie SSL mit NGINX konfigurieren:

  1. Besorgen Sie sich ein SSL-Zertifikat. Sie können ein kostenloses SSL-Zertifikat von Let’s Encrypt erhalten oder eine andere Zertifizierungsstelle verwenden.

  2. Ändern Sie Ihre NGINX-Konfiguration, um SSL zu aktivieren:

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;
}
  1. Testen und starten Sie NGINX neu:
sudo nginx -t
sudo systemctl restart nginx

Erläuterung:

  • Die SSL-Anweisung „listen 443“ stellt sicher, dass NGINX auf HTTPS-Verkehr lauscht.
  • ssl_certificate und ssl_certificate_key geben die Pfade zu Ihrem SSL-Zertifikat und privaten Schlüssel an.
  • Eine Umleitung von HTTP zu HTTPS stellt sicher, dass der gesamte Datenverkehr SSL verwendet.

Abschluss

NGINX ist ein leistungsstarkes Tool zur Verbesserung der Leistung, Skalierbarkeit und Sicherheit Ihrer Node.js-Anwendungen. Vom Lastausgleich über die Bereitstellung statischer Dateien bis hin zur Abwicklung der SSL-Terminierung entlastet NGINX viele Aufgaben von Node.js, sodass sich Ihre Anwendung auf das konzentrieren kann, was sie am besten kann: die Handhabung der Geschäftslogik. Mit den in diesem Artikel bereitgestellten Konfigurationen können Sie NGINX einrichten, um die Effizienz und Zuverlässigkeit Ihrer Node.js-Anwendung zu verbessern.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/imsushant12/nginx-for-nodejs-applications-what-why-and-how-to-use-it-1gbn?1 Bei Verstößen wenden Sie sich bitte an Study_golang @163.com löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3