Nginx auf Ubuntu 24.04 installieren und einrichten
Nginx ist ein kostenloser Open-Source-Webserver, mit dem du statische und dynamische Websites, Anwendungen oder Services ausliefern kannst. Unter Ubuntu lässt sich Nginx als klassischer Webserver, Load Balancer, Reverse Proxy oder HTTP-Cache einsetzen.
Diese Anleitung führt dich durch die Installation von Nginx auf Ubuntu 24.04 und zeigt, wie du Beispiel-Webanwendungen so einrichtest, dass sie auf deinem Server zuverlässig und performant laufen.
Voraussetzungen
Bevor du startest:
- Stelle eine Ubuntu-24.04-Instanz bei centron bereit.
- Lege einen neuen Domain- oder Subdomain-A-Record an, der auf die IP-Adresse deines Servers zeigt. Zum Beispiel app.example.com.
- Verbinde dich per SSH mit dem Server und erstelle einen Nicht-Root-Benutzer mit sudo-Rechten.
- Aktualisiere den Server.
Nginx auf Ubuntu 24.04 installieren
Das aktuelle Nginx-Paket ist in den Standard-APT-Repos von Ubuntu 24.04 enthalten. Nutze die folgenden Schritte, um die Paketlisten zu aktualisieren und den Nginx-Webserver zu installieren.
Paketindex aktualisieren
Aktualisiere den Paketindex des Servers.
$ sudo apt update
Nginx installieren
Installiere Nginx.
$ sudo apt install nginx -y
Installierte Version prüfen
Zeige die installierte Nginx-Version auf deinem Server an.
$ sudo nginx -version
Deine Ausgabe sollte in etwa wie folgt aussehen:
nginx version: nginx/1.24.0 (Ubuntu)
Nginx-Systemdienst verwalten
Nginx nutzt einen systemd-Dienst namens nginx, um Laufzeit und Worker-Prozesse zu steuern. Mit den folgenden Schritten aktivierst und verwaltest du den Dienst auf deinem Server.
Nginx beim Booten aktivieren
Sorge dafür, dass der Nginx-Webserver beim Systemstart automatisch startet.
$ sudo systemctl enable nginx
Ausgabe:
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
Starte den Nginx-Dienst.
$ sudo systemctl start nginx
Nginx stoppen
Stoppe den Nginx-Dienst.
$ sudo systemctl stop nginx
Nginx neu starten
Starte den Nginx-Dienst neu.
$ sudo systemctl restart nginx
Status des Dienstes prüfen
Zeige den Status an und überprüfe, ob Nginx läuft.
$ sudo systemctl status nginx
Ausgabe:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Wed 2024-06-26 10:55:50 UTC; 1min 0s ago
Docs: man:nginx(8)
Process: 2397 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 2399 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 2400 (nginx)
Tasks: 2 (limit: 1068)
Memory: 1.7M (peak: 2.4M)
CPU: 13ms
CGroup: /system.slice/nginx.service
├─2400 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
└─2401 "nginx: worker process"
Wenn dort Active: active (running) steht, läuft Nginx korrekt. Falls der Status Active: active (failed) anzeigt, beende andere Prozesse auf Port 80 und starte den nginx-Dienst anschließend neu.
Einen neuen Nginx Virtual Host erstellen
Mit Nginx-Virtual-Hosts kannst du Anwendungsdateien aus einem eigenen Verzeichnis unter einer bestimmten Domain bereitstellen. Die folgenden Schritte zeigen eine Beispiel-Konfiguration, um eine einfache Web-App sicher zu veröffentlichen.
Virtual-Host-Konfiguration anlegen
Erstelle eine neue Virtual-Host-Datei im Verzeichnis /etc/nginx/sites-available, z. B. app.example.com.conf.
$ sudo nano /etc/nginx/sites-available/app.example.com.conf
Füge die folgenden Einstellungen in die Datei ein.
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;
}
}
Speichere die Datei und schließe den Editor.
Diese Konfiguration lauscht auf deine Domain app.example.com und liefert Dateien aus dem Verzeichnis /var/www/app.example.com aus.
Konfiguration testen
Prüfe die Nginx-Konfiguration auf Fehler.
$ sudo nginx -t
Ausgabe:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Virtual Host aktivieren
Verlinke die Konfiguration nach /etc/nginx/sites-enabled, um den Virtual Host zu aktivieren.
$ sudo ln -s /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/
Web-Root-Verzeichnis erstellen
Lege das Web-Root-Verzeichnis /var/www/app.example.com an, in dem deine Anwendungsdateien liegen.
$ sudo mkdir -p /var/www/app.example.com
Beispiel-HTML-Seite hinzufügen
Erstelle im Verzeichnis eine HTML-Datei, z. B. index.html.
$ sudo nano /var/www/app.example.com/index.html
Füge den folgenden HTML-Inhalt ein.
Greetings from centron
Speichere die Datei und schließe den Editor.
Wenn du die Seite im Browser öffnest, siehst du die Überschrift „Greetings from centron“.
Nginx neu starten und Zugriff testen
Starte Nginx neu, damit die neue Virtual-Host-Konfiguration aktiv wird.
$ sudo systemctl restart nginx
Rufe deine Domain auf und überprüfe, ob Nginx die Web-App korrekt ausliefert. Du kannst dafür z. B. Curl nutzen.
$ curl http://app.example.com
Ausgabe:
Greetings from centron
Nginx-Webserver mit SSL absichern
SSL-Zertifikate verschlüsseln die Verbindung zwischen Browser und Nginx-Server per HTTPS. Standardmäßig nimmt Nginx Anfragen über den ungesicherten HTTP-Port 80 an. Mit den folgenden Schritten erzeugst du vertrauenswürdige Let’s-Encrypt-Zertifikate und aktivierst HTTPS.
Certbot installieren
Installiere den Let’s-Encrypt-Client Certbot über Snap.
$ sudo snap install --classic certbot
Certbot-Version prüfen
Lass dir die installierte Certbot-Version anzeigen.
$ sudo certbot --version
Ausgabe:
certbot 2.11.0
SSL-Zertifikat erstellen
Erstelle ein neues SSL-Zertifikat für deine Domain. Ersetze app.example.com durch die Domain aus deiner Virtual-Host-Konfiguration.
$ sudo certbot --nginx -d app.example.com --agree-tos
Firewall-Regeln einrichten
Ubuntu 24.04 bringt UFW (Uncomplicated Firewall) standardmäßig aktiv mit. Mit den folgenden Regeln erlaubst du HTTP- und HTTPS-Zugriffe für Nginx.
HTTP erlauben
Erlaube eingehende Verbindungen auf Port 80.
$ sudo ufw allow 80/tcp
HTTPS erlauben
Erlaube eingehende Verbindungen auf Port 443.
$ sudo ufw allow 443/tcp
UFW-Regeln prüfen
Zeige die UFW-Regeltabelle an und kontrolliere, ob die neuen Regeln aktiv sind.
$ sudo ufw status
Ausgabe:
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 auf Ubuntu 24.04 installiert und so konfiguriert, dass Webanwendungen über deinen Server ausgeliefert werden. Nginx unterstützt mehrere Virtual-Host-Konfigurationen, mit denen du verschiedene Apps unter eigenen Domains sicher bereitstellen kannst. Außerdem lässt sich Nginx mit Diensten wie MySQL und PHP kombinieren, um dynamische Webanwendungen bereitzustellen. Weitere Optionen und Einstellungen findest du in der offiziellen Nginx-Dokumentation.


