Tutorials

Nginx installieren

Nginx ist ein leistungsstarker Webserver — oft genutzt für statische Dateien, als Reverse Proxy und zur SSL-Terminierung. Diese Anleitung zeigt dir Installation und Grundkonfiguration auf Ubuntu und Debian.

Voraussetzungen

  • Ein VPS mit Ubuntu 20.04+ oder Debian 11+
  • Root- oder Sudo-Zugriff
  • Ein Domainname, der auf die IP deines Servers zeigt (für Virtual Hosts)

1. Mit deinem Server verbinden

ssh root@DEINE_SERVER_IP

Oder verwende das Web-Terminal im Sitequest-Dashboard.

2. Nginx installieren

apt update
apt install -y nginx

Prüfe, ob Nginx läuft:

systemctl status nginx

Rufe http://DEINE_SERVER_IP im Browser auf — du solltest die Nginx-Willkommensseite sehen.

3. Firewall-Ports öffnen

Wenn du die Sitequest-Firewall nutzt, stelle sicher, dass die Ports 80 (HTTP) und 443 (HTTPS) offen sind.

Mit ufw:

ufw allow 'Nginx Full'

4. Dateistruktur verstehen

Pfad Zweck
/etc/nginx/nginx.conf Hauptkonfigurationsdatei
/etc/nginx/sites-available/ Virtual-Host-Konfigurationsdateien
/etc/nginx/sites-enabled/ Symlinks zu aktiven Konfigurationen
/var/www/ Standard-Web-Root
/var/log/nginx/ Zugriffs- und Fehlerprotokolle

5. Virtual Host erstellen

Erstelle ein Verzeichnis für deine Website:

mkdir -p /var/www/example.com/html
chown -R www-data:www-data /var/www/example.com

Lege eine Testseite an:

echo '<h1>Hallo von example.com</h1>' > /var/www/example.com/html/index.html

Erstelle die Server-Block-Konfiguration:

nano /etc/nginx/sites-available/example.com
server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    root /var/www/example.com/html;
    index index.html;

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

Aktiviere die Website und teste die Konfiguration:

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

6. Reverse Proxy einrichten

Um Datenverkehr an eine Anwendung auf localhost:3000 weiterzuleiten:

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Praktisch, wenn du Node.js-, Python- oder Docker-Anwendungen hinter Nginx betreibst.

7. Gzip-Komprimierung aktivieren

Füge Folgendes im http-Block in /etc/nginx/nginx.conf hinzu:

gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml text/javascript;

Lade Nginx nach den Änderungen neu:

systemctl reload nginx

8. Grundlegende Sicherheits-Header

Füge diese Header in deinen server-Block ein:

add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;

9. (Optional) Brotli-Komprimierung aktivieren

Brotli bietet bessere Komprimierungsraten als Gzip, vor allem bei textbasierten Dateien. Unter Ubuntu 22.04+ kannst du das dynamische Modul installieren:

apt install -y libnginx-mod-brotli

Füge dann Folgendes im http-Block in /etc/nginx/nginx.conf hinzu:

brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml text/javascript image/svg+xml;

Nginx neu laden:

systemctl reload nginx

Brotli wird nur über HTTPS verwendet. Browser fallen auf Gzip zurück, wenn Brotli nicht verfügbar ist — lass also beides aktiv.

10. (Optional) HTTP/3 aktivieren

HTTP/3 nutzt QUIC (UDP) für schnellere Verbindungen, besonders in mobilen Netzen. Du brauchst Nginx 1.25.0+ (Ubuntu 24.04 liefert es mit, für ältere Versionen das offizielle Nginx-Repo verwenden).

Prüfe deine Version:

nginx -v

Erweitere deinen SSL-Server-Block um HTTP/3-Listener:

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    listen 443 quic;
    listen [::]:443 quic;
    server_name example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    add_header Alt-Svc 'h3=":443"; ma=86400' always;

    # ... restliche Konfiguration
}

Stelle sicher, dass UDP-Port 443 in deiner Sitequest-Firewall offen ist. HTTP/3-Support testen unter http3check.net.

Nächste Schritte