Nginx auf Debian 12 und Ubuntu 24.04 aus dem offiziellen Repository installieren
Installieren Sie Nginx aus dem offiziellen nginx.org-Repository auf Debian 12 oder Ubuntu 24.04. Umfasst Signaturschlüssel, apt-Pinning, Firewall-Regeln für UFW und nftables, systemd-Verwaltung und Verifizierung nach jedem Schritt.
Dieses Tutorial installiert Nginx aus dem offiziellen nginx.org-Repository auf einem Debian 12- oder Ubuntu 24.04-VPS. Sie erhalten die neueste Version (1.28.2 stable oder 1.29.6 mainline) anstelle des veralteten Pakets Ihrer Distribution. Jeder Schritt beinhaltet eine Verifizierung, damit Sie genau wissen, was passiert ist.
Für den Kontext, wo Nginx in Ihren Server-Stack passt, lesen Sie Nginx-Administration auf einem VPS.
Voraussetzungen
Sie benötigen:
- Einen VPS mit Debian 12 (Bookworm) oder Ubuntu 24.04 (Noble Numbat)
- Einen Nicht-Root-Benutzer mit
sudo-Rechten - SSH-Zugang zum Server
Alle Befehle in diesem Tutorial werden als sudo-Benutzer ausgeführt. Nicht als root.
Soll ich Nginx stable oder mainline installieren?
Nginx pflegt zwei Branches. Stable (gerade Versionsnummer, aktuell 1.28.x) erhält nur kritische Fehlerbehebungen. Mainline (ungerade Versionsnummer, aktuell 1.29.x) erhält alle neuen Features, Bugfixes und Sicherheitspatches. Das Nginx-Team empfiehlt mainline für den Produktionsbetrieb. Stable existiert für Nutzer, die minimale Änderungen zwischen Updates bevorzugen.
| Stable | Mainline | |
|---|---|---|
| Aktuelle Version | 1.28.2 | 1.29.6 |
| Update-Häufigkeit | Nur kritische Fixes | Alle 4-6 Wochen |
| Neue Features | Nein | Ja |
| Empfohlen von nginx.org | Für konservative Setups | Für den Produktionsbetrieb |
Dieses Tutorial verwendet standardmäßig stable. Um stattdessen mainline zu installieren, tauschen Sie die Repository-URL an den markierten Stellen aus.
Warum das offizielle Repository statt des Distributions-Pakets verwenden?
Die Standard-apt-Repositories von Debian 12 und Ubuntu 24.04 liefern Nginx 1.22.1 bzw. 1.24.0. Diese Versionen liegen Monate bis Jahre hinter den offiziellen Releases zurück. Das nginx.org-Repository liefert Ihnen den neuesten stable- oder mainline-Build, gepflegt vom Nginx-Team.
| Quelle | Debian 12 Version | Ubuntu 24.04 Version | Gepflegt von |
|---|---|---|---|
| Distributions-Repository | 1.22.1 | 1.24.0 | OS-Maintainer |
| nginx.org stable | 1.28.2 | 1.28.2 | Nginx-Team |
| nginx.org mainline | 1.29.6 | 1.29.6 | Nginx-Team |
Wie installiere ich Nginx auf Debian 12 aus dem offiziellen Repository?
Installieren Sie die Voraussetzungen, fügen Sie den nginx.org-Signaturschlüssel hinzu, konfigurieren Sie die apt-Quelle, pinnen Sie das Repository und installieren Sie. Das dauert etwa zwei Minuten.
Schritt 1: Voraussetzungen installieren
sudo apt update
sudo apt install -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring
Schritt 2: Den nginx.org-Signaturschlüssel importieren
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Prüfen Sie, den Fingerabdruck des Schlüssels:
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
Genau hinsehen: Die Ausgabe listet mehrere Signaturschlüssel auf. Suchen Sie nach diesem Fingerabdruck:
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
Wenn keiner der aufgelisteten Fingerabdrücke übereinstimmt, löschen Sie die Datei und laden Sie sie erneut herunter. Ein nicht übereinstimmender Schlüssel bedeutet, dass der Download abgefangen oder beschädigt wurde.
Schritt 3: Das apt-Repository hinzufügen
Für stable:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/debian $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Für mainline ersetzen Sie packages durch packages/mainline:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/mainline/debian $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Schritt 4: Das offizielle Repository pinnen
Dies stellt sicher, dass apt das nginx.org-Paket gegenüber der Distributions-Version bevorzugt:
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginx
Ohne Pinning könnte ein zukünftiges apt upgrade das offizielle Paket durch die ältere Distributions-Version ersetzen.
Schritt 5: Nginx installieren
sudo apt update
sudo apt install -y nginx
Schritt 6: Starten und Installation überprüfen
nginx -v
Erwartete Ausgabe für stable:
nginx version: nginx/1.28.2
Das nginx.org-Paket startet nach der Installation nicht automatisch. Starten Sie es jetzt:
sudo systemctl start nginx
Prüfen Sie, ob der Dienst läuft:
sudo systemctl status nginx
Genau hinsehen: Suchen Sie nach Active: active (running) in der Ausgabe.
Prüfen Sie, ob Nginx auf Port 80 lauscht:
ss -tlnp | grep :80
Erwartete Ausgabe:
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=...,fd=...))
Testen Sie die Willkommensseite:
curl -I http://localhost
Genau hinsehen: Die Antwort sollte HTTP/1.1 200 OK und Server: nginx/1.28.2 enthalten.
Wie installiere ich Nginx auf Ubuntu 24.04 aus dem offiziellen Repository?
Der Ablauf ist nahezu identisch mit Debian. Die einzigen Unterschiede sind das Voraussetzungs-Paket und die Repository-URL.
Schritt 1: Voraussetzungen installieren
sudo apt update
sudo apt install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring
Hinweis: Ubuntu verwendet ubuntu-keyring anstelle von debian-archive-keyring.
Schritt 2: Den nginx.org-Signaturschlüssel importieren
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Prüfen Sie, den Fingerabdruck (gleicher Schlüssel wie bei Debian):
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
Suchen Sie nach 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 unter den aufgelisteten Schlüsseln.
Schritt 3: Das apt-Repository hinzufügen
Für stable:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Für mainline:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/mainline/ubuntu $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Schritt 4: Das offizielle Repository pinnen
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginx
Schritt 5: Nginx installieren
sudo apt update
sudo apt install -y nginx
Schritt 6: Starten und Installation überprüfen
Starten Sie Nginx (es startet nicht automatisch nach der Installation):
sudo systemctl start nginx
Führen Sie die gleichen Verifizierungen wie bei Debian durch:
nginx -v
sudo systemctl status nginx
ss -tlnp | grep :80
curl -I http://localhost
Sie sollten nginx/1.28.2 (stable) oder nginx/1.29.6 (mainline) sowohl in nginx -v als auch in den curl-Antwort-Headern sehen.
Wie verwalte ich Nginx mit systemd?
Nginx liefert eine systemd-Unit-Datei mit. Dies sind die Befehle, die Sie täglich verwenden werden.
| Befehl | Was er bewirkt |
|---|---|
sudo systemctl start nginx |
Nginx starten |
sudo systemctl stop nginx |
Nginx stoppen |
sudo systemctl restart nginx |
Stoppen und starten (trennt Verbindungen) |
sudo systemctl reload nginx |
Konfiguration neu laden ohne Verbindungen zu trennen |
sudo systemctl enable nginx |
Beim Booten starten |
sudo systemctl disable nginx |
Nicht beim Booten starten |
sudo systemctl status nginx |
Laufstatus und aktuelle Logs anzeigen |
Reload vs Restart: Verwenden Sie reload nach Konfigurationsänderungen. Es wendet die neue Konfiguration an, ohne aktive Verbindungen zu trennen. Verwenden Sie restart nur, wenn Sie Einstellungen auf Binär-Ebene geändert oder Nginx aktualisiert haben. Reload ist sicher. Restart trennt jede aktive Verbindung.
Aktivieren Sie den automatischen Start von Nginx beim Booten:
sudo systemctl enable nginx
Testen Sie immer Ihre Konfiguration vor dem Neuladen:
sudo nginx -t
Erwartete Ausgabe:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Wenn nginx -t Fehler meldet, beheben Sie diese vor dem Neuladen. Ein fehlgeschlagenes Reload lässt die vorherige Konfiguration aktiv. Ein fehlgeschlagener Restart lässt Nginx gestoppt.
Wie konfiguriere ich UFW-Firewall-Regeln für Nginx?
UFW (Uncomplicated Firewall) ist das Standard-Firewall-Frontend unter Ubuntu. Es ist unter Debian verfügbar, aber nicht standardmäßig installiert. Einige VPS-Images werden ohne UFW ausgeliefert. Wenn ufw nicht gefunden wird, installieren Sie es zuerst:
sudo apt install -y ufw
Das nginx.org-Paket enthält keine UFW-Anwendungsprofile (Nginx Full, Nginx HTTP, Nginx HTTPS). Diese Profile werden nur mit dem Distributions-Paket ausgeliefert. Verwenden Sie stattdessen Portnummern.
Erlauben Sie zuerst SSH (damit Sie sich nicht aussperren):
sudo ufw allow OpenSSH
Erlauben Sie HTTP (80) und HTTPS (443):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Wenn Sie nur HTTPS benötigen:
sudo ufw allow 443/tcp
Stellen Sie sicher, dass UFW aktiviert ist:
sudo ufw enable
Kontrollieren Sie, die Regeln:
sudo ufw status
Die erwartete Ausgabe enthält:
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
Wenn ufw status Status: inactive anzeigt, führen Sie zuerst sudo ufw enable aus.
Wie konfiguriere ich nftables-Firewall-Regeln für Nginx?
Debian 12 verwendet nftables als Standard-Firewall-Backend. Wenn Sie Firewall-Regeln direkt verwalten (ohne UFW), fügen Sie die Nginx-Ports zu Ihrer nftables-Konfiguration hinzu.
Bearbeiten Sie Ihre nftables-Konfiguration:
sudo nano /etc/nftables.conf
Fügen Sie diese Regeln in Ihre input-Chain ein (innerhalb Ihrer inet filter-Tabelle):
tcp dport { 80, 443 } accept
Eine minimale funktionierende Konfiguration sieht so aus:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif lo accept
ct state established,related accept
tcp dport 22 accept
tcp dport { 80, 443 } accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
Wenden Sie die Regeln an:
sudo nft -f /etc/nftables.conf
Prüfen Sie:
sudo nft list ruleset
Genau hinsehen: Suchen Sie nach tcp dport { 80, 443 } accept in der Ausgabe. Wenn es fehlt, wurden die Regeln nicht angewandt.
Aktivieren Sie nftables beim Booten:
sudo systemctl enable nftables
Wie überprüfe ich, ob Nginx korrekt läuft?
Nach der Installation und der Firewall-Einrichtung gehen Sie diese Checkliste durch.
Vom Server aus:
nginx -v
sudo systemctl status nginx
ss -tlnp | grep :80
curl -I http://localhost
Von Ihrem lokalen Rechner aus (ersetzen Sie YOUR_SERVER_IP):
curl -I http://YOUR_SERVER_IP
Erwartete Antwort-Header:
HTTP/1.1 200 OK
Server: nginx/1.28.2
Wenn der externe curl-Aufruf ein Timeout ergibt, localhost aber funktioniert, blockiert Ihre Firewall Port 80. Gehen Sie zurück zum UFW- oder nftables-Abschnitt oben.
Sie können auch http://YOUR_SERVER_IP im Browser öffnen. Sie sollten die Seite "Welcome to nginx!" sehen.
Wichtige Datei- und Verzeichnispfade
| Pfad | Zweck |
|---|---|
/etc/nginx/nginx.conf |
Haupt-Konfigurationsdatei |
/etc/nginx/conf.d/ |
Zusätzliche Konfigurationsdateien (standardmäßig geladen) |
/var/log/nginx/access.log |
Zugriffsprotokoll |
/var/log/nginx/error.log |
Fehlerprotokoll |
/usr/share/nginx/html/ |
Standard-Dokumentenstamm |
Das offizielle nginx.org-Paket verwendet /etc/nginx/conf.d/ für Seitenkonfigurationen. Dies unterscheidet sich vom Distributions-Paket, das sites-available/ und sites-enabled/ verwendet. Beide Ansätze funktionieren. Das conf.d-Muster ist einfacher.
Um zu erfahren, wie Nginx-Konfigurationsdateien aufgebaut sind, lesen Sie Nginx-Konfigurationsdatei: Aufbau und Struktur erklärt. Um mehrere Domains auf diesem Server zu hosten, lesen Sie Nginx Server Blocks: Mehrere Domains auf einem VPS betreiben.
Bereit, es selbst auszuprobieren?
Hosten Sie Ihre Webanwendungen auf einem zuverlassigen VPS. →