In der heutigen digitalen Welt ist die Sicherheit von Webanwendungen von größter Bedeutung. Eine der effektivsten Methoden, um die Datenübertragung zwischen dem Benutzerbrowser und dem Server zu schützen, ist die Implementierung von SSL/TLS, welches die Kommunikation verschlüsselt. In diesem Artikel erfahren Sie, wie Sie eine Express.js-Anwendung mithilfe von Nginx als Reverse-Proxy-Server sichern und HTTPS implementieren, um eine verschlüsselte Verbindung bereitzustellen.
Einführung in Express.js, Nginx und SSL/TLS
Express.js ist ein Webanwendungs-Framework für Node.js, das die Entwicklung von Webanwendungen und APIs vereinfacht. Nginx ist ein leistungsstarker Webserver, der für seine Effizienz, Konfigurationsflexibilität und niedrigen Ressourcenverbrauch bekannt ist. SSL/TLS sind kryptografische Protokolle, die sichere Kommunikation über ein Computernetzwerk ermöglichen.
Schritt 1: Konfiguration von Express.js
Bevor Sie SSL/TLS implementieren, stellen Sie sicher, dass Ihre Express.js-Anwendung ordnungsgemäß eingerichtet ist. Falls Sie noch keine haben, beginnen Sie mit einer einfachen Express.js-Anwendung. Hier ist ein Beispiel, wie Sie eine solche Anwendung starten:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hallo Welt mit Express.js');
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server läuft auf http://localhost:${PORT}`);
});
Speichern Sie diesen Code in einer Datei namens app.js
und starten Sie die Anwendung mit Node.js:
node app.js
Schritt 2: Installation und Konfiguration von Nginx
Nginx fungiert als Reverse-Proxy für Express.js, d.h., er nimmt HTTP/S-Anfragen im Namen Ihrer Express.js-Anwendung entgegen und leitet sie weiter. Installieren Sie Nginx auf einem Ubuntu/Debian-basierten System mit:
sudo apt update
sudo apt install nginx
Konfigurieren Sie anschließend Nginx als Proxy für Ihre Express.js-Anwendung. Erstellen Sie eine neue Konfigurationsdatei unter /etc/nginx/sites-available/
mit dem Namen meine_app
:
server {
listen 80;
server_name ihr_domainname.de;
location / {
proxy_pass http://localhost:3000; # Weiterleitung der Anfragen an Express.js
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;
}
}
Aktivieren Sie diese Konfiguration, indem Sie einen symbolischen Link in /etc/nginx/sites-enabled/
erstellen und Nginx neu starten:
sudo ln -s /etc/nginx/sites-available/meine_app /etc/nginx/sites-enabled/
sudo systemctl restart nginx
Schritt 3: SSL/TLS-Zertifikat mit Let’s Encrypt beschaffen
Für die Implementierung von HTTPS benötigen Sie ein SSL/TLS-Zertifikat. Let’s Encrypt bietet kostenlose Zertifikate an. Installieren Sie Certbot und das Nginx-Plugin mit:
sudo apt install certbot python3-certbot-nginx
Beschaffen und konfigurieren Sie Ihr SSL/TLS-Zertifikat automatisch mit:
sudo certbot --nginx -d ihr_domainname.de
Folgen Sie den Anweisungen. Certbot wird Ihre Nginx-Konfiguration anpassen, um HTTPS zu implementieren, und Ihr Zertifikat automatisch erneuern.
Schritt 4: Weiterleitung von HTTP zu HTTPS
Um sicherzustellen, dass alle Besucher die sichere Version Ihrer Website verwenden, konfigurieren Sie Nginx so, dass sämtlicher HTTP-Verkehr auf HTTPS umgeleitet wird. Ändern Sie die Nginx-Konfiguration für Ihr Domain unter /etc/nginx/sites-available/meine_app
:
server {
listen 80;
server_name ihr_domainname.de www.ihr_domainname.de;
return 301 https://$server_name$request_uri;
}
Starten Sie Nginx neu, um die Änderungen anzuwenden:
sudo systemctl restart nginx
Dienste von Shape.host
Für die Bereitstellung von Express.js-Anwendungen unter Einhaltung höchster Sicherheitsstandards empfehlen wir die Cloud VPS-Dienste von Shape.host. Sie bieten skalierbare, leistungsstarke Infrastrukturen, die ideal für die sichere und effiziente Bereitstellung von Express.js-Anwendungen mit Nginx und HTTPS sind. Besuchen Sie Shape.host für weitere Informationen über ihre Hosting-Lösungen und wie sie die Leistung und Sicherheit Ihrer Webanwendung maximieren können.