Schritt-für-Schritt-Anleitung: Nginx auf Debian 12 installieren, systemd einsetzen, Virtual Host anlegen und HTTPS mit Let’s Encrypt aktivieren. Für Boxis-Kunden und Systemadministratorinnen.
Nginx auf Debian 12 (Bookworm) installieren und konfigurieren
Stand: März 2026
Lesezeit: ca. 12 Minuten
Zielgruppe: Systemadministratorinnen und fortgeschrittene Nutzer mit Debian-12-Server.
Nginx ist ein leistungsfähiger HTTP-Server und Reverse Proxy. Unter Debian 12 (Bookworm) lässt er sich gut mit systemd betreiben und eignet sich vor PHP, Node.js oder APIs. Diese Anleitung beschreibt eine saubere Installation, grundlegende Absicherung, einen minimalen Virtual Host und optional TLS mit Let’s Encrypt.
Was Sie am Ende haben
- Nginx aus den Debian-Repositories installiert und den Dienst geprüft.
- HTTP/HTTPS-Ports freigegeben (Beispiel mit UFW).
- Eigenes Document Root und ein eigener
server-Block. - Optional: Let’s-Encrypt-Zertifikat und automatische Erneuerung.
Voraussetzungen
- Debian-12-System mit SSH-Zugang.
- Benutzer mit
sudo-Rechten (kein dauerhaftes Arbeiten alsroot). - DNS-Name (z. B.
app.example.com), der auf die öffentliche IP zeigt, wenn Sie HTTPS und Erneuerung nutzen möchten. - Grundkenntnisse der Shell.
Hinweis Boxis: Bei gemanagtem Hosting können Servereingriffe eingeschränkt sein; klären Sie Änderungen an der Webstack vor dem Eingriff mit dem Support.
1. Paketindex aktualisieren und Nginx installieren
sudo apt update
sudo apt install -y nginx
Debian liefert eine stabile Nginx-Version; externe Repositories sind nur nötig, wenn spezielle Module erforderlich sind.
2. Firewall: HTTP und HTTPS (UFW)
Wenn UFW aktiv ist:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
sudo ufw status
Bei nftables oder Cloud-Sicherheitsgruppen öffnen Sie TCP 80 und TCP 443 dort entsprechend.
3. Nginx mit systemd
| Aktion | Befehl |
|---|---|
| Autostart | sudo systemctl enable nginx |
| Start | sudo systemctl start nginx |
| Status | sudo systemctl status nginx |
| Konfiguration neu laden | sudo systemctl reload nginx |
| Syntax prüfen | sudo nginx -t |
Nach Konfigurationsänderungen immer nginx -t ausführen, bevor Sie neu laden.
4. Konfigurationspfade unter Debian
Typisch:
- Hauptkonfiguration:
/etc/nginx/nginx.conf - Sites:
/etc/nginx/sites-available/(Symlinks insites-enabled/) - Zusätzlich:
/etc/nginx/conf.d/*.conf
sites-available / sites-enabled erleichtern das Aktivieren und Deaktivieren einzelner Sites.
5. Virtual Host anlegen
Beispiel: app.example.com mit Dateien unter /var/www/app.example.com/html.
5.1 Verzeichnisse und Testseite
sudo mkdir -p /var/www/app.example.com/html
echo '<!DOCTYPE html><html><head><meta charset="utf-8"><title>OK</title></head><body><h1>It works</h1></body></html>' | sudo tee /var/www/app.example.com/html/index.html
sudo chown -R www-data:www-data /var/www/app.example.com
5.2 Server-Block
Datei /etc/nginx/sites-available/app.example.com.conf:
server {
listen 80;
listen [::]:80;
server_name app.example.com;
root /var/www/app.example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Site aktivieren:
sudo ln -sf /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Test mit Browser oder curl -I http://app.example.com.
6. HTTPS mit Let’s Encrypt
sudo apt install -y certbot python3-certbot-nginx
Zertifikat anfordern (E-Mail und Domain anpassen):
sudo certbot --nginx -d app.example.com -m sie@example.com --agree-tos --non-interactive
Erneuerung prüfen:
sudo certbot renew --dry-run
Die Erneuerung übernimmt meist ein systemd-Timer oder cron; prüfen mit systemctl list-timers | grep certbot.
7. Betriebsempfehlungen
- Nach Konfigurationsänderungen
reloadstattrestart, wenn möglich. - Bei hohem Traffic pro Site eigene Logs (
access_log/error_log). server_tokens off;wenn Richtlinien es erlauben.- PHP/Apps:
fastcgi_passzu PHP-FPM oderproxy_passzum Upstream konsistent halten. - Backup von
/etc/nginx/vor größeren Änderungen.
8. Kurz-Fehlersuche
| Symptom | Prüfen |
|---|---|
502 Bad Gateway |
Backend nicht erreichbar; falscher proxy_pass / fastcgi_pass. |
403 Forbidden |
Dateirechte; root-Pfad; SELinux/AppArmor. |
| Konfiguration wird nicht geladen | sudo nginx -t und Zeilen angegeben. |
| Zertifikat erneuert nicht | DNS zeigt noch hierher; Port 80 für HTTP-01 erreichbar. |
9. Zusammenfassung
Sie haben Nginx auf Debian 12 installiert, Webports freigegeben, einen Virtual Host erstellt und optional HTTPS mit Certbot aktiviert. Für Produktion: Logging, Rate Limits und Upstream-Health weiter verfeinern.
Verwandte Themen
- Knowledge-Base-Suche:
/{lang}/knowledgebase/search/ - Hosting & DNS: Kategorie Hosting & Domains, sofern vorhanden.
Allgemeine Anleitung; Befehle können je nach Image und Anpassungen abweichen.