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).
Passende Infrastruktur bei centron
Ubuntu-Server ohne eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
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 updateNginx installieren
$ sudo apt install nginx -yInstallierte Nginx-Version prüfen
$ nginx -versionBeispielausgabe:
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 nginxBeispielausgabe:
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 nginxNginx stoppen:
$ sudo systemctl stop nginxNginx neu starten:
$ sudo systemctl restart nginxNginx-Status prüfen
$ sudo systemctl status nginxBeispielausgabe:
● 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.confVirtuelle 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.comHTML-Datei erstellen
$ sudo nano /var/www/app.example.com/index.htmlHTML-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 -tBeispielausgabe:
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 nginxVirtuellen Host überprüfen
Mit curl kannst du prüfen, ob deine Domain die Seite korrekt ausliefert.
$ curl http://app.example.comErwartete 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 certbotCertbot-Version prüfen
Überprüfe, ob Certbot korrekt installiert wurde:
$ certbot --versionBeispielausgabe:
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/tcpSSL-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-tosBeispielausgabe:
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/tcpFirewall-Status prüfen
Überprüfe, ob die aktualisierten Firewall-Regeln aktiv sind:
$ sudo ufw statusBeispielausgabe:
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.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.