Nginx auf Ubuntu 25.04 installieren und konfigurieren

Nginx ist eine kostenlose, quelloffene Webserver-Software, die sich hervorragend für das effiziente Hosting von statischen und dynamischen Webanwendungen oder Diensten eignet. Sie kann als Webserver, Load Balancer, Reverse Proxy oder HTTP-Cache eingesetzt werden und ermöglicht so eine nahtlose Integration in bestehende Server-Stacks oder den direkten Zugriff über die IP-Adresse oder Domain des Servers.

In dieser Anleitung wird beschrieben, wie Nginx unter Ubuntu 25.04 installiert und konfiguriert wird, einschließlich der Einrichtung einer Beispiel-Webanwendung zur Leistungsoptimierung deines Servers.

Voraussetzungen

Bevor du beginnst, stelle sicher, dass Folgendes vorhanden ist:

  • Zugriff auf eine Ubuntu-25.04-Instanz als Nicht-Root-Benutzer mit sudo-Rechten.
  • Ein Domain-A-Eintrag, der auf die öffentliche IP-Adresse der Instanz verweist (z. B. app.example.com).

Nginx auf Ubuntu 25.04 installieren

Nginx ist in den Standard-APT-Repositories von Ubuntu enthalten. Befolge die folgenden Schritte, um den Paketindex zu aktualisieren und Nginx auf deinem Server zu installieren.

Paketindex aktualisieren

Nginx installieren

$ sudo apt install nginx -y

Installierte Nginx-Version prüfen

Beispielausgabe:

nginx version: nginx/1.26.3 (Ubuntu)

Nginx-Dienst verwalten

Unter Ubuntu läuft Nginx als systemd-Dienst. Dadurch kannst du den Serverprozess einfach steuern und seinen Status prüfen. Mit den folgenden Befehlen lässt sich Nginx starten, stoppen oder neu starten.

Nginx beim Systemstart aktivieren

$ sudo systemctl enable nginx

Beispielausgabe:

Synchronizing state of nginx.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable nginx

Nginx starten, stoppen und neu starten

Nginx starten:

$ sudo systemctl start nginx

Nginx stoppen:

$ sudo systemctl stop nginx

Nginx neu starten:

$ sudo systemctl restart nginx

Nginx-Status prüfen

$ sudo systemctl status nginx

Beispielausgabe:

● nginx.service - Hochleistungs-Webserver und Reverse Proxy Server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Wed 2025-04-23 16:27:12 UTC; 8s ago
 Invocation: 83add31885be44869b2e3573230fbdee
       Docs: man:nginx(8)
    Process: 5578 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 5580 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 5581 (nginx)
      Tasks: 5 (limit: 8761)
     Memory: 4.4M (peak: 5M)
        CPU: 35ms
     CGroup: /system.slice/nginx.service
             ├─5581 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ├─5582 "nginx: worker process"
             ├─5583 "nginx: worker process"
             ├─5584 "nginx: worker process"
             └─5585 "nginx: worker process"

Wenn im Status Active: active (running) angezeigt wird, läuft Nginx korrekt. Sollte Active: failed erscheinen, beende zunächst Prozesse, die Port 80 belegen, und starte Nginx anschließend neu.

Neuen virtuellen Nginx-Host erstellen

Virtuelle Hosts bestimmen, wie Nginx Anfragen verarbeitet und Dateien je nach Domain oder Verzeichnisstruktur bereitstellt. Befolge die folgenden Schritte, um einen neuen Host einzurichten.

Virtuelle Host-Konfigurationsdatei erstellen

$ sudo nano /etc/nginx/sites-available/app.example.com.conf

Virtuelle Host-Konfiguration hinzufügen

server {
        listen 80;
        listen [::]:80;

        server_name app.example.com;

        root /var/www/app.example.com;
        index index.html;

        location / {
                try_files $uri $uri/ =404;
        }
}

Diese Konfiguration sorgt dafür, dass Nginx Anfragen an app.example.com entgegennimmt und Inhalte aus dem Verzeichnis /var/www/app.example.com ausliefert.

Virtuellen Host aktivieren

Verknüpfe die Konfiguration mit dem Verzeichnis /etc/nginx/sites-enabled, um sie auf dem Server zu aktivieren.

$ sudo ln -s /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/

Webroot-Verzeichnis erstellen

$ sudo mkdir -p /var/www/app.example.com

HTML-Datei erstellen

$ sudo nano /var/www/app.example.com/index.html

HTML-Inhalt hinzufügen

<html>
    <head></head>
    <body>
        <h1>Willkommen von centron</h1> 
    </body>
</html>

Wenn du diese Datei im Browser öffnest, zeigt sie die Meldung „Willkommen von centron“ an.

Konfiguration testen

Beispielausgabe:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginx neu starten

$ sudo systemctl restart nginx

Virtuellen Host überprüfen

Mit curl kannst du prüfen, ob deine Domain die Seite korrekt ausliefert.

$ curl http://app.example.com

Erwartete Ausgabe:

<html>
    <head></head>
    <body>
        <h1>Willkommen von centron</h1> 
    </body>
</html>

Nginx-Webserver absichern

SSL-Zertifikate schützen die Verbindung zwischen dem Browser des Nutzers und dem Nginx-Webserver, indem sie Daten über das HTTPS-Protokoll verschlüsseln. Da Nginx standardmäßig auf dem unverschlüsselten HTTP-Port 80 lauscht, lässt sich die Sicherheit durch ein vertrauenswürdiges Let’s-Encrypt-Zertifikat mit Certbot erhöhen. Befolge die folgenden Schritte, um deinen Nginx-Server mit HTTPS abzusichern.

Certbot installieren

Installiere den Let’s-Encrypt-Client Certbot über Snap:

$ sudo snap install --classic certbot

Certbot-Version prüfen

Überprüfe, ob Certbot korrekt installiert wurde:

Beispielausgabe:

certbot 4.0.0

HTTP-Verbindungen für Domainprüfung zulassen

Erlaube eingehende HTTP-Verbindungen auf Port 80, damit Certbot die ACME-Domainüberprüfung durchführen kann:

SSL-Zertifikat erstellen

Fordere ein SSL-Zertifikat für deine Domain an. Ersetze app.example.com durch deine tatsächliche Domain, die in der Nginx-Konfiguration hinterlegt ist.

$ sudo certbot --nginx -d app.example.com --agree-tos

Beispielausgabe:

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/app.example.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/app.example.com/privkey.pem
This certificate expires on 2025-07-22.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for app.example.com to /etc/nginx/sites-enabled/app.example.com.conf
Congratulations! You have successfully enabled HTTPS on https://app.example.com

Firewall-Regeln einrichten

Ubuntu 25.04 verfügt standardmäßig über die aktivierte Uncomplicated Firewall (UFW). Mit den folgenden Befehlen kannst du sie konfigurieren und den HTTPS-Zugriff auf deinen Nginx-Webserver freigeben.

HTTPS-Datenverkehr zulassen

Erlaube eingehende Verbindungen über Port 443, um sicheren HTTPS-Traffic zu ermöglichen:

Firewall-Status prüfen

Überprüfe, ob die aktualisierten Firewall-Regeln aktiv sind:

Beispielausgabe:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

Fazit

Du hast Nginx erfolgreich auf Ubuntu 25.04 installiert und so konfiguriert, dass deine Webanwendungen sicher über HTTPS mit vertrauenswürdigen Let’s-Encrypt-Zertifikaten ausgeliefert werden. Nginx unterstützt mehrere virtuelle Hosts und lässt sich mit Diensten wie MySQL oder PHP kombinieren, um dynamische, sichere Webanwendungen bereitzustellen. Weitere Optimierungs- und Sicherheitseinstellungen findest du in der offiziellen Nginx-Dokumentation.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: