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
$ sudo apt update
Nginx installieren
$ sudo apt install nginx -y
Installierte Nginx-Version prüfen
$ nginx -version
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
$ sudo nginx -t
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:
$ certbot --version
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:
$ sudo ufw allow 80/tcp
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:
$ sudo ufw allow 443/tcp
Firewall-Status prüfen
Überprüfe, ob die aktualisierten Firewall-Regeln aktiv sind:
$ sudo ufw status
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.


