CRITICAL INFRA
Loading critical CVEs…
ALL EXPLOITED
Loading…

Docker in Produktion mit Nginx — Reverse Proxy, TLS und Hardening

Docker loest "laeuft auf meinem Rechner", aber in Produktion brauchen Sie einen kontrollierten Eingangspunkt: Nginx vor den Containern, mit an einer Stelle terminiertem TLS, isolierten Netzwerken und geschlossenen Ports. Ein praktischer, schrittweiser Leitfaden mit docker-compose.

Warum Docker + Nginx

Architektur

Das Internet erreicht nur Nginx (80/443). Nginx leitet ueber ein internes Docker-Bridge-Netz an die App-Container weiter. Die Datenbank liegt im selben Netz, veroeffentlicht aber KEINEN Port nach aussen.

Internet443 / 80 Nginxreverse proxy + TLS docker network (bridge, intern) app1 :8080 app2 :3000 db (postgres)fara port public

Schritt 1 — Docker installieren

Schritt 2 — docker-compose fuer die App

Beispiel docker-compose.yml mit App + Postgres, Healthcheck und Restart-Policy:

Schritt 3 — Nginx Reverse Proxy

Nginx (auf dem Host oder als Container im selben web-Netz) proxyt per Servicename zum Container:

Schritt 4 — TLS mit Let's Encrypt

Schritt 5 — Hardening

Automatisches Let's Encrypt

Das Zertifikat sollte nicht von Hand erneuert werden. Certbot installiert einen systemd-Timer (certbot.timer), der certbot renew zweimal taeglich ausfuehrt und nur erneuert, was in weniger als 30 Tagen ablaeuft.

GeoIP + nftables-Firewall

Laendersperren koennen auf zwei Ebenen erfolgen. Auf der nginx-Ebene (GeoIP2-Modul + map $geoip2_country_code) antworten Sie mit 403. Effizienter ist es, Pakete in nftables zu verwerfen, bevor sie nginx erreichen — das blockiert auch Scans, nicht nur HTTP-Anfragen.

CrowdSec auf Nginx-Logs

CrowdSec liest die nginx-Logs (access.log / error.log), wendet Szenarien an und blockiert feindliche IPs — mit kollektiver Intelligenz (IPs, die im gesamten CrowdSec-Netz gemeldet werden).

Logging und Betrieb

Fazit

Das Nginx-+-Docker-Muster bietet reproduzierbare Deployments, einen einzigen TLS-Eingangspunkt und eine minimale Angriffsflaeche — vom einzelnen VPS bis zu mehreren Knoten. Wir entwerfen, sichern und ueberwachen es fuer Sie.

Beispiel: vollstaendige docker-compose.yml

Ein vollstaendiger Stack (App + DB + Nginx) in einer Datei, bereit fuer docker compose up -d:

# docker-compose.yml — app + Postgres + Nginx, retea interna
services:
  app:
    image: myapp:latest
    restart: unless-stopped
    expose: ["8080"]          # NU 'ports' — nu expune public
    networks: [web]
    depends_on: [db]
  db:
    image: postgres:16
    restart: unless-stopped
    environment: { POSTGRES_PASSWORD: schimba-ma }
    volumes: [dbdata:/var/lib/postgresql/data]
    networks: [web]           # fara 'ports' — doar intern
  nginx:
    image: nginx:alpine
    restart: unless-stopped
    ports: ["80:80", "443:443"]
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
      - ./certs:/etc/nginx/certs:ro
    networks: [web]
networks: { web: {} }
volumes:  { dbdata: {} }
Lassen Sie uns über Ihr Projekt sprechen →