Installation und Konfiguration von Nginx auf CentOS 7: Ein vollständiger Schritt-für-Schritt-Leitfaden
Nginx ist einer der leistungsstärksten und am weitesten verbreiteten Open-Source-Webserver der Welt. Bekannt für seine außergewöhnliche Leistung, seinen geringen Speicherverbrauch und seine Fähigkeit, Tausende gleichzeitiger Verbindungen zu verarbeiten, ist Nginx die bevorzugte Lösung für die Bereitstellung statischer Inhalte, als Reverse Proxy und für Load Balancing über verteilte Systeme.
Egal ob Sie einen persönlichen Blog, eine stark frequentierte E-Commerce-Plattform oder eine komplexe Microservices-Architektur betreiben, Nginx bietet die Geschwindigkeit und Zuverlässigkeit, die Ihre Benutzer erwarten. Dieser umfassende Leitfaden führt Sie durch jeden Schritt der Installation, Konfiguration, Sicherung und Optimierung von Nginx auf einem CentOS 7-Server — von der anfänglichen Systemvorbereitung bis zur Aktivierung von HTTPS mit einem kostenlosen Let’s Encrypt SSL-Zertifikat.
> Voraussetzungen: Ein CentOS 7-Server mit Root- oder Sudo-Zugriff. Wenn Sie eine zuverlässige, leistungsstarke Umgebung zum Folgen benötigen, erwägen Sie die Erkundung von VPS Hosting von AlexHost — speziell für anspruchsvolle Workloads mit vollständigem Root-Zugriff und SSD-Speicher entwickelt.
Schritt 1: Aktualisieren Sie Ihr System
Vor der Installation neuer Software ist es wichtig sicherzustellen, dass Ihr CentOS 7-System vollständig aktualisiert ist. Veraltete Pakete können Sicherheitslücken und Abhängigkeitskonflikte einführen, die den Installationsprozess erschweren.
Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:
sudo yum update -yDieser Befehl aktualisiert alle installierten Pakete auf ihre neuesten verfügbaren Versionen. Das -y-Flag bestätigt automatisch alle Eingabeaufforderungen und macht den Prozess nicht interaktiv. Lassen Sie die Aktualisierung vollständig abschließen, bevor Sie fortfahren.
Schritt 2: Nginx über YUM installieren
Nginx ist nicht in den Standard-CentOS 7-Basis-Repositories verfügbar. Sie müssen zunächst das EPEL (Extra Packages for Enterprise Linux)-Repository installieren, das eine breite Palette zusätzlicher Softwarepakete für RHEL-basierte Distributionen bereitstellt.
Installieren Sie das EPEL-Repository:
sudo yum install epel-release -yInstallieren Sie Nginx:
sudo yum install nginx -yDieser Befehl lädt Nginx zusammen mit allen erforderlichen Abhängigkeiten herunter und installiert es. Nach Abschluss der Installation können Sie die installierte Version überprüfen mit:
nginx -vSie sollten eine Ausgabe ähnlich der folgenden sehen:
nginx version: nginx/1.20.xSchritt 3: Nginx-Dienst starten und aktivieren
Nach der Installation von Nginx müssen Sie den Dienst starten und so konfigurieren, dass er bei jedem Neustart des Servers automatisch startet.
Starten Sie den Nginx-Dienst:
sudo systemctl start nginxAktivieren Sie Nginx zum Starten beim Booten:
sudo systemctl enable nginxÜberprüfen Sie den Dienststatus, um zu bestätigen, dass er ausgeführt wird:
sudo systemctl status nginxSie sollten eine Ausgabe sehen, die anzeigt, dass der Dienst aktiv (läuft) ist:
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; ...)
Active: active (running) since ...Wenn der Dienst nicht startet, überprüfen Sie die Fehlerprotokolle unter /var/log/nginx/error.log auf Diagnoseinformationen.
Schritt 4: Firewall konfigurieren
CentOS 7 verwendet firewalld als Standard-Firewall-Verwaltungstool. Standardmäßig werden HTTP (Port 80) und HTTPS (Port 443) blockiert. Sie müssen diese Ports explizit öffnen, um Web-Traffic zu Ihrem Nginx-Server zuzulassen.
HTTP-Traffic zulassen:
sudo firewall-cmd --permanent --add-service=httpHTTPS-Traffic zulassen:
sudo firewall-cmd --permanent --add-service=httpsFirewall neu laden, um die Änderungen anzuwenden:
sudo firewall-cmd --reloadAktive Regeln überprüfen:
sudo firewall-cmd --list-allSie sollten sowohl http als auch https im Abschnitt services der Ausgabe aufgelistet sehen. Wenn Ihr Server hinter einer externen Firewall oder Sicherheitsgruppe gehostet wird (häufig bei Cloud-Anbietern), stellen Sie sicher, dass diese Regeln auch aktualisiert werden, um Traffic auf den Ports 80 und 443 zuzulassen.
Schritt 5: Installation überprüfen
Um zu bestätigen, dass Nginx korrekt installiert ist und Inhalte bereitstellt, öffnen Sie einen Webbrowser und navigieren Sie zur öffentlichen IP-Adresse Ihres Servers:
http://your_server_ipSie sollten die Standard-Nginx-Willkommensseite sehen, die die Nachricht *"Welcome to nginx!"* anzeigt. Dies bestätigt, dass der Webserver betriebsbereit ist und aus dem Internet erreichbar ist.
Wenn Sie die Willkommensseite nicht sehen, überprüfen Sie Folgendes:
- Der Nginx-Dienst wird ausgeführt (
sudo systemctl status nginx) - Die Firewall-Regeln sind korrekt angewendet
- Die IP-Adresse Ihres Servers ist korrekt
- Kein anderer Dienst (wie Apache) belegt Port 80
Schritt 6: Nginx Server Blocks konfigurieren
Nginx verwendet Server Blocks (funktional äquivalent zu Apaches Virtual Hosts), um zu definieren, wie es Anfragen für verschiedene Domains oder Subdomains verarbeitet. Jeder Server Block wird typischerweise als separate Konfigurationsdatei im /etc/nginx/conf.d/ Verzeichnis gespeichert.
Die Haupt-Nginx-Konfigurationsdatei befindet sich unter /etc/nginx/nginx.conf. Sie enthält eine Direktive, die automatisch alle .conf Dateien aus dem conf.d Verzeichnis lädt und hält Ihre Konfiguration modular und leicht zu verwalten.
Schritt 6a: Eine neue Server Block-Konfigurationsdatei erstellen
Erstellen Sie eine neue Konfigurationsdatei für Ihre Domain. Ersetzen Sie example.com durch Ihren tatsächlichen Domainnamen:
sudo nano /etc/nginx/conf.d/example.com.confFügen Sie die folgende Server Block-Konfiguration hinzu:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm index.php;
# Logging
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
# Deny access to hidden files
location ~ /. {
deny all;
}
}Wichtige Direktiven erklärt:
| Direktive | Beschreibung |
|---|---|
listen 80 | Weist Nginx an, auf eingehende Verbindungen an Port 80 (HTTP) zu warten |
server_name | Definiert die Domainnamen, auf die dieser Server Block antwortet |
root | Gibt das Document Root-Verzeichnis an, in dem Website-Dateien gespeichert sind |
index | Definiert die Standarddateien, die Nginx bereitstellt, wenn ein Verzeichnis angefordert wird |
try_files | Versucht, den angeforderten URI als Datei zu bereitstellen, dann als Verzeichnis, und gibt 404 zurück, wenn keines existiert |
access_log / error_log | Definiert separate Protokolldateien für diesen Virtual Host für einfacheres Debugging |
Speichern Sie die Datei und beenden Sie den Editor (Ctrl+X, dann Y, dann Enter in nano).
Schritt 7: Dokumentstammverzeichnis erstellen und Testdatei
Erstellen Sie das Dokumentstammverzeichnis, das Sie in der Server-Block-Konfiguration definiert haben:
sudo mkdir -p /var/www/example.com/htmlErstellen Sie eine einfache index.html Datei, um zu überprüfen, ob der Server-Block korrekt funktioniert:
echo "<h1>Welcome to Example.com — Powered by Nginx on CentOS 7!</h1>" | sudo tee /var/www/example.com/html/index.htmlLegen Sie die richtige Eigentümerschaft und Berechtigungen fest, damit Nginx die Dateien lesen kann:
sudo chown -R nginx:nginx /var/www/example.com/
sudo chmod -R 755 /var/www/example.com/> Hinweis zu SELinux: CentOS 7 wird standardmäßig mit aktiviertem SELinux ausgeliefert. Wenn Nginx Ihre Webdateien nicht lesen kann, auch wenn die Berechtigungen korrekt sind, müssen Sie möglicherweise den entsprechenden SELinux-Kontext anwenden:
> “`bash
> sudo chcon -Rt httpd_sys_content_t /var/www/example.com/
> “`
Schritt 8: Testen der Nginx-Konfiguration
Bevor Sie Nginx neu starten, um Ihre neue Konfiguration anzuwenden, testen Sie immer auf Syntaxfehler. Eine falsch konfigurierte Datei kann Ihren gesamten Webserver zum Absturz bringen.
Führen Sie den Konfigurationstest aus:
sudo nginx -tEin erfolgreicher Test erzeugt die folgende Ausgabe:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulWenn Fehler gemeldet werden, überprüfen Sie sorgfältig die angegebenen Zeilennummern in Ihren Konfigurationsdateien und beheben Sie alle Probleme, bevor Sie fortfahren.
Starten Sie Nginx neu, um die Änderungen anzuwenden:
sudo systemctl restart nginxAlternativ können Sie die Konfiguration neu laden, ohne aktive Verbindungen zu unterbrechen (empfohlen für Produktionsumgebungen):
sudo systemctl reload nginxNavigieren Sie nun in einem Browser zu Ihrer Domain. Sie sollten Ihre benutzerdefinierte index.html Seite sehen.
Schritt 9: HTTPS mit Let’s Encrypt einrichten
Das Ausführen einer Website über einfaches HTTP setzt Ihre Benutzer potenziellen Abhörangriffen und Man-in-the-Middle-Angriffen aus. Die Sicherung Ihrer Website mit HTTPS ist nicht mehr optional — es ist eine grundlegende Anforderung für Benutzervertrauen, Datenintegrität und Suchmaschinen-Ranking.
Let’s Encrypt bietet kostenlose, automatisierte und vertrauenswürdige SSL/TLS-Zertifikate. Sie können auch Premium-SSL-Zertifikate von AlexHost erkunden, die erweiterte Validierung und organisationsvalidierte Optionen bieten, die höhere Vertrauensstufen für Business-Websites bieten.
Certbot und das Nginx-Plugin installieren
sudo yum install certbot python2-certbot-nginx -yDas SSL-Zertifikat abrufen und installieren
Führen Sie Certbot mit dem --nginx Plugin aus, das Ihre Nginx-Konfiguration automatisch ändert, um HTTPS zu aktivieren:
sudo certbot --nginx -d example.com -d www.example.comFolgen Sie den interaktiven Eingabeaufforderungen:
- Geben Sie Ihre E-Mail-Adresse für Erneuerungsbenachrichtigungen ein
- Akzeptieren Sie die Let’s Encrypt-Nutzungsbedingungen
- Wählen Sie, ob HTTP-Traffic zu HTTPS umgeleitet werden soll (dringend empfohlen — wählen Sie Option 2)
Certbot wird automatisch:
- Ein signiertes Zertifikat von Let’s Encrypt abrufen
- Ihre
/etc/nginx/conf.d/example.com.confändern, um SSL-Direktiven einzubeziehen - Eine HTTP-zu-HTTPS-Umleitung konfigurieren
Überprüfen Sie nach Abschluss die HTTPS-Konfiguration durch Besuch:
https://example.comIhr Browser sollte ein Schlosssymbol anzeigen, das bestätigt, dass die Verbindung verschlüsselt ist.
Schritt 10: Automatisieren Sie die Zertifikatverlängerung
Let's Encrypt-Zertifikate sind 90 Tage lang gültig. Wenn Sie diese vor Ablauf nicht verlängern, werden Ihren Besuchern Sicherheitswarnungen angezeigt, was das Vertrauen der Benutzer und den Traffic erheblich beeinträchtigt.
Testen Sie den Verlängerungsprozess
Bevor Sie die Automatisierung einrichten, überprüfen Sie, ob der Verlängerungsprozess ordnungsgemäß funktioniert:
sudo certbot renew --dry-runEin erfolgreicher Testlauf bestätigt, dass die automatische Verlängerung ohne Probleme funktioniert.
Richten Sie einen Cron-Job für automatische Verlängerung ein
Öffnen Sie die Root-Crontab:
sudo crontab -eFügen Sie die folgende Zeile hinzu, um zweimal täglich nach Zertifikaten zu suchen und diese zu verlängern (die empfohlene Häufigkeit):
0 0,12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"Erklärung des Cron-Zeitplans:
0 0,12 * * *— Wird jeden Tag um Mitternacht und Mittag ausgeführt--quiet— Unterdrückt die Ausgabe, es sei denn, es tritt ein Fehler auf--post-hook "systemctl reload nginx"— Lädt Nginx nach einer erfolgreichen Verlängerung neu, um das neue Zertifikat ohne Ausfallzeiten anzuwenden
Speichern Sie den Crontab-Editor und beenden Sie ihn. Ihre SSL-Zertifikate werden nun automatisch verlängert und halten Ihre Website sicher, ohne dass manuelle Eingriffe erforderlich sind.
Performance Optimization Tips for Nginx on CentOS 7
Sobald Ihre grundlegende Einrichtung abgeschlossen ist, sollten Sie diese Konfigurationsverbesserungen in Betracht ziehen, um die Nginx-Leistung zu maximieren:
Enable Gzip Compression
Fügen Sie Folgendes zu Ihrem nginx.conf innerhalb des http {} Blocks hinzu, um die Größe der an Clients gesendeten Antworten zu reduzieren:
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;Configure Browser Caching
Fügen Sie Cache-Control-Header für statische Assets hinzu, um die Serverauslastung zu reduzieren und die Seitenladezeiten zu verbessern:
location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}Tune Worker Processes
In /etc/nginx/nginx.conf stellen Sie die Anzahl der Worker-Prozesse so ein, dass sie der Anzahl der CPU-Kerne Ihres Servers entspricht:
worker_processes auto;
worker_connections 1024;> Für ressourcenintensive Anwendungen oder Websites mit hohem Traffic sollten Sie ein Upgrade auf Dedicated Servers von AlexHost in Betracht ziehen, die garantierte CPU-, RAM- und Speicherressourcen ohne Nachbarschaftseffekte bieten.
Verwaltung mehrerer Websites mit Nginx
Eine der größten Stärken von Nginx ist die Möglichkeit, mehrere Websites auf einem einzelnen Server über Server-Blöcke zu hosten. Für jede zusätzliche Domain müssen Sie einfach:
- Eine neue
.confDatei in/etc/nginx/conf.d/erstellen - Eine eindeutige
server_nameDirektive definieren - Die
rootDirektive auf das entsprechende Document Root verweisen sudo nginx -tundsudo systemctl reload nginxausführen
Wenn Sie eine grafische Benutzeroberfläche zur Verwaltung Ihres Webservers, virtueller Hosts, Datenbanken und E-Mail-Konten bevorzugen, erwägen Sie VPS mit cPanel — eine vollständig verwaltete Control-Panel-Lösung, die die Serververwaltung vereinfacht, ohne Flexibilität zu opfern.
Erkunden Sie alternativ die vollständige Palette von VPS Control Panels von AlexHost, einschließlich Plesk, DirectAdmin und anderen Optionen, die für verschiedene Workflows und technische Vorlieben geeignet sind.
Behebung häufiger Nginx-Probleme auf CentOS 7
| Problem | Wahrscheinliche Ursache | Lösung | |
|---|---|---|---|
| Nginx startet nicht | Port 80/443 wird bereits verwendet | Führen Sie `sudo ss -tlnp | grep :80` aus, um den konfliktierenden Prozess zu identifizieren |
| 403 Forbidden-Fehler | Falsche Dateiberechtigungen oder SELinux-Kontext | Überprüfen Sie chmod/chown und wenden Sie chcon für SELinux an | |
| 502 Bad Gateway | Upstream-Backend (PHP-FPM, Node.js) läuft nicht | Überprüfen Sie, ob der Backend-Service aktiv ist und der Socket/Port korrekt ist | |
| SSL-Zertifikat wird nicht erneuert | Certbot kann nicht an Port 80 gebunden werden | Stellen Sie sicher, dass Port 80 offen ist und kein anderer Prozess ihn blockiert | |
| Änderungen werden nicht wirksam | Konfiguration nicht neu geladen | Führen Sie sudo systemctl reload nginx nach jeder Konfigurationsänderung aus |
Fazit
Sie haben Nginx auf CentOS 7 nun erfolgreich installiert, konfiguriert und gesichert. Ihr Server ist bereit, Websites mit hoher Leistung zu hosten, gleichzeitige Verbindungen effizient zu verarbeiten und Inhalte über verschlüsselte HTTPS-Verbindungen bereitzustellen — alles wesentliche Qualitäten für eine moderne, produktionsreife Web-Umgebung.
Hier ist eine Zusammenfassung der durchgeführten Schritte:
- ✅ CentOS 7-System aktualisiert und Nginx über das EPEL-Repository installiert
- ✅ Nginx-Service gestartet und für automatischen Start beim Booten aktiviert
- ✅ firewalld konfiguriert, um HTTP- und HTTPS-Verkehr zu ermöglichen
- ✅ Benutzerdefinierten Server-Block für eine Domain erstellt und konfiguriert
- ✅ Korrekte Dateiberechtigungen und SELinux-Kontexte für das Document Root gesetzt
- ✅ Konfiguration auf Syntaxfehler getestet, bevor Änderungen angewendet wurden
- ✅ Website mit kostenlosem Let’s Encrypt SSL-Zertifikat über Certbot gesichert
- ✅ Automatische Zertifikatserneuerung mit Cron-Job eingerichtet
Die Wartung eines sicheren und leistungsstarken Webservers erfordert kontinuierliche Aufmerksamkeit. Halten Sie Nginx regelmäßig aktualisiert, überwachen Sie Ihre Zugriffs- und Fehlerprotokolle und überprüfen Sie Ihre Konfiguration, wenn sich die Anforderungen Ihrer Website ändern.
Wenn Sie nach einer robusten Hosting-Grundlage für Ihre Nginx-gestützten Projekte suchen, bietet AlexHost ein umfassendes Spektrum an Lösungen — von kostengünstigen Shared Web Hosting für kleinere Websites bis hin zu hochperformanten VPS und dedizierter Infrastruktur für anspruchsvolle Anwendungen. Jeder Plan wird durch Enterprise-Hardware, 24/7 technischen Support und ein Engagement für Verfügbarkeit und Sicherheit unterstützt.
bei allen Hosting-Diensten