Nginx auf Debian 12 und Ubuntu 24.04 aus dem offiziellen Repository installieren

6 Min. Lesezeit·Matthieu·nginxdebianubuntuweb-serverfirewall|

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.