Nginx ist ein leistungsstarker Webserver, der für seine hohe Leistung und seinen geringen Ressourcenverbrauch bekannt ist. Ursprünglich zur Lösung des C10k-Problems entwickelt, zeichnet er sich durch die Bereitstellung statischer Inhalte, Lastausgleich und Reverse-Proxying aus. Die Kombination von Nginx mit Debian, das für seine Stabilität und Sicherheit bekannt ist, ergibt eine robuste und zuverlässige Serverumgebung.
Hauptfunktionen von Nginx:
- Hochleistung: Behandelt effizient mehrere gleichzeitige Verbindungen.
- Geringe Ressourcennutzung: Optimiert für die Ausführung mit minimalem Speicher und CPU.
- Lastverteilung: Verteilt den Datenverkehr auf mehrere Server, um die Leistung zu verbessern.
- Reverse-Proxying: Leitet Clientanforderungen nahtlos an Backend-Server weiter.
- Handhabung statischer Inhalte: Stellt statische Dateien schnell und effizient bereit.
- Sicherheitsfunktionen: Unterstützt SSL/TLS für verschlüsselte Kommunikation.
- Flexibilität: Unterstützt Protokolle wie HTTP, HTTPS, SMTP, POP3 und IMAP.
Vorteile der Kombination von Nginx mit Debian:
- Stabilität: Der Ruf von Debian für Stabilität stellt sicher, dass Ihr Server zuverlässig bleibt.
- Sicherheit: Die robusten Sicherheitsmaßnahmen von Debian schützen Ihren Nginx-Server vor Schwachstellen.
- Benutzerfreundlichkeit: Das Paketverwaltungssystem von Debian vereinfacht die Installation und Wartung von Nginx.
- Gemeinschaftliche Unterstützung: Nginx und Debian haben starke Communities, die umfangreiche Ressourcen und Support bereitstellen.
Beim Einstieg in die Einrichtung werden Sie feststellen, dass die Stabilität von Debian perfekt mit der Effizienz von Nginx harmoniert und so eine ideale Umgebung für Ihre Webanwendungen schafft. Lassen Sie uns die erforderlichen Schritte zur Installation und Konfiguration von Nginx auf einem Debian-Server näher betrachten.
Vorbereiten Ihres Systems vor der Nginx-Installation
Stellen Sie sicher, dass Ihr System aktualisiert ist, bevor Sie Nginx installieren. Dies verhindert potenzielle Konflikte während der Installation und verringert das Risiko von Kompatibilitätsproblemen und Sicherheitslücken.
Um Ihre Systempakete zu aktualisieren, führen Sie Folgendes aus:
sudo apt update && sudo apt upgrade
Dieser Befehl ruft die Liste der verfügbaren Updates ab (über apt update
) und aktualisiert dann die aktuellen Softwarepakete auf die neueste Version (mithilfe apt upgrade
).
Installieren Sie den NGINX-Webserver-Standard
Standardmäßig ist NGINX in den Debian-Repositories verfügbar. Dies macht den Installationsprozess unkompliziert.
Führen Sie den folgenden Befehl aus, um nginx zu installieren:
sudo apt install nginx
Der apt install
Der Befehl weist das APT-Paketverwaltungsprogramm (ein Teil des Debian-Systems) an, das NGINX-Paket zu installieren.
Optional: Installieren Sie die NGINX-Vollversion
NGINX bietet eine nginx-full
Version mit zusätzlichen Modulen, die in der Standardversion nicht enthalten sind. Wenn Sie mehr Funktionalität benötigen, installieren Sie die nginx-Vollversion:
sudo apt install nginx-full
Optional: Installieren Sie die NGINX-Extras Version
Für einen noch breiteren Funktionsumfang betrachten Sie die nginx-extras
Version. So installieren Sie:
sudo apt install nginx-extras
Überprüfen der NGINX-Installation
Stellen Sie nach der Installation sicher, dass NGINX ordnungsgemäß ausgeführt wird.
Überprüfen Sie den Status des NGINX-Dienstes wie folgt:
systemctl status nginx
NGINX funktioniert ordnungsgemäß, wenn die Ausgabe „aktiv (wird ausgeführt)“ anzeigt. Andernfalls enthält die Ausgabe Einzelheiten zum Fehler zur Fehlerbehebung.
Wenn NGINX nicht aktiviert ist, verwenden Sie:
sudo systemctl enable nginx --now
Konfigurieren Sie die UFW-Firewall für Nginx
UFW oder Uncomplicated Firewall bietet eine benutzerfreundliche Oberfläche zum Verwalten von iptables-Firewallregeln. Es ist unter Debian nicht standardmäßig installiert, Sie können es jedoch aus den Standard-Repositorys herunterladen. Wenn Ihr Server öffentlich zugänglich ist, sollten Sie aus Sicherheitsgründen UFW-Regeln einrichten.
Installieren Sie die UFW-Firewall
Wenn UFW noch nicht auf Ihrem System installiert ist, können Sie dies durch Ausführen des folgenden Befehls tun:
sudo apt install ufw
UFW-Firewall aktivieren
Sobald die Installation abgeschlossen ist, können Sie UFW durch Ausführen des folgenden Befehls aktivieren:
sudo ufw enable
Die Standardeinstellungen von UFW blockieren alle eingehenden Verbindungen und lassen alle ausgehenden Verbindungen zu. Dies bedeutet, dass unerwünschte Systemzugriffe verhindert werden, Ihr System jedoch die Außenwelt erreichen kann.
Auflisten der installierten Anwendungen
UFW verwendet Anwendungsprofile, also Regelsätze für bestimmte Anwendungen. Um installierte Anwendungen mit UFW-Profilen anzuzeigen, führen Sie Folgendes aus:
sudo ufw app list
Konfigurieren von UFW-Regeln für NGINX
Je nach Bedarf können Sie UFW so konfigurieren, dass NGINX-Verbindungen über HTTP (Port 80), HTTPS (Port 443) oder beides zugelassen werden.
Nur für HTTP (Port 80):
sudo ufw allow 'Nginx HTTP'
Nur HTTPS (Port 443):
sudo ufw allow 'Nginx HTTPS'
Sowohl HTTP als auch HTTPS:
sudo ufw allow 'Nginx Full'
Überprüfen der Firewall-Regeln
Um zu bestätigen, dass Ihre Regeln vorhanden sind, überprüfen Sie die aktiven Firewall-Regeln:
sudo ufw status
Testen der NGINX-Konfiguration
Stellen Sie nach dem Einrichten von UFW sicher, dass Sie die NGINX-Startseite sehen können. Rufen Sie in Ihrem Browser die IP-Adresse Ihres Servers auf:
http://your_server_ip
Oder für lokale Setups:
http://localhost
Angenommen, Sie sehen die NGINX-Standardseite. Ihre Konfiguration funktioniert. Damit ist die Firewall-Einrichtung für NGINX unter Debian abgeschlossen.
NGINX-Serverblöcke erstellen
Wie die virtuellen Hosts von Apache können Sie mit NGINX-Serverblöcken mehrere Domänen von einem Server aus hosten. Jede Domäne hat ihre eigenen Konfigurationseinstellungen. Ersetzen Sie für diese Anleitung „example.com“ durch Ihren tatsächlichen Domänennamen.
Erstellen Sie ein Verzeichnis für Ihre Domain
Richten Sie ein Verzeichnis für Ihre Domain ein. In diesem Verzeichnis werden die Dateien Ihrer Website gespeichert:
sudo mkdir -p /var/www/example.com/
Weisen Sie dem Nginx-Verzeichnis den Besitz zu
Weisen Sie den Verzeichnisbesitz dem Benutzer und der Gruppe „www-data“ zu, die NGINX normalerweise verwendet:
sudo chown -R www-data:www-data /var/www/example.com/
Erstellen einer Nginx-Test-HTML-Seite
Erstellen Sie eine Test-HTML-Seite in Ihrem Domänenverzeichnis, um Ihr NGINX-Setup zu bestätigen:
sudo nano /var/www/example.com/index.html
Fügen Sie den folgenden HTML-Code hinzu:
<html>
<head>
<title>Welcome to Example.com</title>
</head>
<body>
<h1>Success! The NGINX server block is working!</h1>
</body>
</html>
Nachdem Sie den Code in den Nano-Editor eingefügt haben, drücken Sie STRG+O, um die Änderungen zu speichern, und dann STRG+X, um den Editor zu verlassen.
Erstellen Sie einen NGINX-Serverblock für die Testseite
Richten Sie einen Serverblock für Ihre Website ein:
sudo nano /etc/nginx/sites-available/example.com.conf
Fügen Sie die folgende Konfiguration hinzu:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Diese Konfiguration weist NGINX an, auf Port 80 auf eingehende Verbindungen zu warten, sowohl für example.com
Und www.example.com
. Ersetzen Sie unbedingt die root
Direktive durch den Verzeichnispfad, den Sie zuvor erstellt haben.
Aktivieren Sie den NGINX-Serverblock über einen symbolischen Link
Aktivieren Sie Ihren Serverblock, indem Sie einen symbolischen Link vom Verzeichnis „sites-available“ zum Verzeichnis „sites-enabled“ erstellen:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Endgültige Konfiguration und Testlauf
Zuletzt bearbeiten wir die Standardkonfigurationsdatei von NGINX und führen einen Testlauf durch, um sicherzustellen, dass alles wie erwartet funktioniert.
Bearbeiten der NGINX-Konfigurationsdatei
Öffne das nginx.conf
Datei:
sudo nano /etc/nginx/nginx.conf
Suchen Sie nach der Zeile server_names_hash_bucket_size 64;
innerhalb der http {}
blockieren und auskommentieren.
Mit dieser Anweisung kann NGINX lange Domänennamen und eine größere Anzahl von Servernamen verarbeiten, indem zu diesem Zweck mehr Speicher zugewiesen wird. Achten Sie jedoch darauf, diesen Wert nicht zu hoch einzustellen, da sonst möglicherweise mehr Speicher als nötig verbraucht wird.
Speichern Sie die Änderungen und verlassen Sie den Editor durch Drücken von STRG+O und STRG+X.
Testen Sie Ihre NGINX-Konfiguration
Bevor Sie NGINX neu starten, sollten Sie überprüfen, ob Ihre Konfigurationssyntax korrekt ist. Führen Sie den folgenden Befehl aus, um einen Testlauf zu starten:
sudo nginx -t
Wenn Ihre Konfiguration korrekt ist, sehen Sie diese Ausgabe:
nginx: die Syntax der Konfigurationsdatei /etc/nginx/nginx.conf ist in Ordnung nginx: Der Test der Konfigurationsdatei /etc/nginx/nginx.conf war erfolgreich
Diese Meldungen zeigen an, dass Ihre NGINX-Konfiguration erfolgreich validiert wurde.
Überprüfen Ihres Serverblocks
Um sicherzustellen, dass Ihr Serverblock ordnungsgemäß funktioniert, öffnen Sie Ihre Domain in einem Webbrowser. Sie sollten die Testseite sehen, die bestätigt, dass Ihr Serverblock aktiv ist.
Zusätzliche Nginx-Befehle
Verbessern der Dateisicherheit auf Ihrem Webserver
Die Sicherheit der Dateien und Ordner auf Ihrem Webserver ist von größter Bedeutung. Vermeiden Sie zu großzügige Zugriffsrechte. Verwenden Sie diese Befehle, um die richtigen Berechtigungen für alle Dateien und Verzeichnisse in Ihrem Webroot festzulegen.
Denken Sie daran, zu ersetzen /var/www/example.com/
mit Ihrem Webroot-Pfad:
sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;
Diese Befehle legen für den Eigentümer Lese- und Ausführungsberechtigungen für Verzeichnisse sowie Lese- und Schreibberechtigungen für Dateien fest. Gruppen und andere erhalten nur Lesezugriff. Passen Sie diese Berechtigungen den Anforderungen Ihrer Anwendung an.
Nginx-Sicherheit mit dem kostenlosen SSL-Zertifikat von Let’s Encrypt
Die Verwendung des HTTPS-Protokolls gewährleistet die Sicherheit des Webservers. Let’s Encrypt stellt ein kostenloses SSL-Zertifikat zur Verfügung. Installieren Sie das Certbot-Paket mit:
sudo apt install python3-certbot-nginx
Starten Sie anschließend die Zertifikatserstellung:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com
Ersetzen Sie es durch Ihre E-Mail-Adresse und Ihren Domänennamen. Dieser Befehl richtet HTTPS mit den erforderlichen Sicherheitsfunktionen ein.
Einrichten der automatischen Zertifikatserneuerung
Let’s Encrypt-Zertifikate sind 90 Tage lang gültig. Richten Sie automatische Verlängerungen mit dem Certbot-Skript ein. Testen Sie den Vorgang:
sudo certbot renew --dry-run
Wenn dies erfolgreich war, fügen Sie den Erneuerungsbefehl zu crontab hinzu:
sudo crontab -e
Fügen Sie diese Zeile ein, um täglich um Mitternacht zu erneuern:
00 00 */1 * * /usr/sbin/certbot-auto renew
Nginx-Serverprotokolle
Überwachen Sie Ihre Serverprotokolle für einen gut gewarteten Webserver. Standardmäßig befinden sich die Protokolle in /var/log/nginx
. Listen Sie sie auf mit:
cd /var/log/nginx && ls -l
Die wichtigsten Logdateien sind die access.log
Und error.log
Um Protokolle in Echtzeit zu überwachen, verwenden Sie die tail -f
Befehl gefolgt vom Pfad zum Protokoll:
tail -f /var/log/nginx/access.log
Nginx aktualisieren
Bevor Sie Ihren Nginx-Server aktualisieren, ist es ratsam, ein Backup Ihrer aktuellen Konfigurationen zu erstellen. Um Ihr Haupt- nginx.conf
Datei, verwenden Sie den folgenden Befehl:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf
In Fällen, in denen Sie Ihr Nginx-Setup umfassend angepasst haben, möchten Sie möglicherweise Ihr gesamtes Nginx-Verzeichnis sichern:
sudo cp -r /etc/nginx/ /etc/nginx-bkup
Nachdem Ihre Konfigurationen sicher gesichert wurden, können Sie nun mit der Aktualisierung von Nginx fortfahren:
sudo apt update
sudo apt upgrade
Insbesondere bei komplexen Setups empfiehlt es sich, Ihre Konfigurationen regelmäßig zu sichern.
Entfernen Sie Nginx
Wenn Sie Nginx auf Ihrem Server nicht mehr benötigen, können Sie es mit den folgenden Schritten entfernen. Stellen Sie zunächst sicher, dass der Nginx-Dienst gestoppt ist:
sudo systemctl disable nginx --now
Als nächstes entfernen Sie das gesamte Nginx-Paket:
sudo apt remove nginx
Möglicherweise finden Sie noch Reste von Nginx-Konfigurationen im /etc/nginx
Verzeichnis. Um diese zu entfernen, verwenden Sie den Befehl:
sudo rm -R /etc/nginx/
Denken Sie daran, dass dadurch alle Ihre benutzerdefinierten Konfigurationsdateien entfernt werden. Stellen Sie daher sicher, dass Sie alles, was Sie benötigen, gesichert haben, bevor Sie mit diesem Schritt fortfahren.
Konfigurieren Sie die Protokollrotationsparameter in Nginx
Nginx enthält standardmäßig eine Funktion zur täglichen Protokollrotation. Sie können diese Einstellungen jedoch nach Ihren Bedürfnissen anpassen.
Access-Konfigurationsdatei für die Protokollrotation
Um die Einstellungen für die Protokollrotation zu ändern, müssen Sie auf die Konfigurationsdatei zugreifen. So können Sie sie mit dem Nano-Texteditor öffnen:
sudo nano /etc/nginx/logrotate.d/nginx
Sobald Sie die Datei öffnen, sehen Sie einen Inhalt, der dem folgenden ähnelt. Passen Sie die Anweisungen in dieser Datei an Ihre Anforderungen hinsichtlich Protokollaufbewahrung und -rotation an, insbesondere wenn Sie Überwachungstools wie fail2ban verwenden.
Beispiel einer Protokollrotationskonfigurationsdatei
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
Grundlegendes zu den primären Konfigurationsparametern
Bei dieser Konfiguration konzentrieren sich Systemadministratoren normalerweise auf zwei Haupteinstellungen:
- Täglich: Mit dieser Einstellung legen Sie die Häufigkeit der Protokollrotation fest. Die Standardeinstellung ist „täglich“, Sie können sie jedoch auf „wöchentlich“ oder „monatlich“ ändern. Tägliche Rotationen vereinfachen jedoch normalerweise die Protokollverwaltung.
- Drehen 14: Diese Zahl teilt dem System mit, wie viele Protokolldateien aufbewahrt werden sollen. Bei der Einstellung „14“ werden beispielsweise die letzten 14 Protokolle aufbewahrt. Wenn Sie nur die Protokolle einer Woche speichern möchten, ändern Sie diese Zahl auf „7“.
Obwohl Sie bei Nginx andere Einstellungen ändern können, sollten Sie Änderungen immer mit Bedacht vornehmen. Wenn Sie Einstellungen ändern, ohne sich über ihre Auswirkungen im Klaren zu sein, kann dies zu unerwarteten Ergebnissen führen. Stellen Sie sicher, dass Sie diese Einstellungen Ihren Anforderungen entsprechend ändern, ohne unbeabsichtigte Probleme zu verursachen.
Denken Sie daran, dass es für die Protokollverwaltung keinen einheitlichen Ansatz gibt. Bewerten Sie immer Ihre spezifische Umgebung und Anforderungen, bevor Sie Änderungen vornehmen.
Abschließende Gedanken
In diesem Leitfaden haben wir die Einrichtung von Nginx unter Debian durchgegangen und dabei Installation, Konfiguration und grundlegende Optimierung behandelt. Indem Sie die Effizienz von Nginx mit der Stabilität von Debian kombinieren, haben Sie eine solide Grundlage für Ihren Webserver geschaffen. Denken Sie daran, Ihren Server auf dem neuesten Stand zu halten und zusätzliche Nginx-Module für erweiterte Funktionen zu erkunden. Wenn Sie auf Probleme stoßen, sind die starken Communities rund um Debian und Nginx immer großartige Ressourcen. Danke, dass Sie mitgemacht haben, und viel Spaß beim Hosten!