← Zurück zu allen Tutorials

Nginx Reverse Proxy mit SSL

Mehrere Webdienste über einen Nginx Reverse Proxy mit automatischen Let's Encrypt SSL-Zertifikaten absichern – komplett in Docker.

Voraussetzungen

Schritt 1: Docker installieren

# Docker installieren (offizielle Methode)
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

# Docker Compose Plugin prüfen
docker compose version

Schritt 2: Projektstruktur anlegen

mkdir -p ~/reverse-proxy/{nginx/conf.d,certbot/{conf,www}}
cd ~/reverse-proxy

Schritt 3: Docker Compose erstellen

# docker-compose.yml
services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./certbot/conf:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot
    restart: unless-stopped

  certbot:
    image: certbot/certbot
    volumes:
      - ./certbot/conf:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h; done'"

Schritt 4: Nginx Konfiguration

# nginx/conf.d/default.conf
server {
    listen 80;
    server_name deine-domain.de;

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name deine-domain.de;

    ssl_certificate /etc/letsencrypt/live/deine-domain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/deine-domain.de/privkey.pem;

    location / {
        proxy_pass http://dein-dienst: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;
    }
}

Schritt 5: SSL-Zertifikat anfordern

# Erst Nginx ohne SSL starten (nur Port 80)
docker compose up -d nginx

# Zertifikat ausstellen
docker compose run --rm certbot certonly \
  --webroot -w /var/www/certbot \
  -d deine-domain.de \
  --email deine@email.de \
  --agree-tos --no-eff-email

# Nginx mit SSL neu starten
docker compose restart nginx
Tipp: Mit einem Reverse Proxy kannst du beliebig viele Dienste auf einem Server betreiben – jeder mit eigenem SSL-Zertifikat. Ideal für KVM Server, auf denen du volle Kontrolle über Ports und Netzwerk hast.

Mehrere Projekte auf einem Server?

Unsere KVM Server bieten feste IPs und volle Root-Rechte – perfekt für Reverse-Proxy-Setups.

Server bestellen