Balou Tools

⚡ Server Config Generator

Erstelle einsatzbereite Konfigurationsdateien für Nginx und Apache (.htaccess) mit Best-Practice Sicherheits- und Performance-Features.

Server-Konfigurations-Generator

Erstelle einsatzbereite Konfigurationsdateien für Nginx und Apache (.htaccess) mit Best-Practice Sicherheits- und Performance-Features.

Konfiguration

Schnellauswahl (Presets)
Grundeinstellungen

Erzwingt eine sichere SSL/TLS-Verbindung durch automatische 301-Weiterleitungen.

SSL / TLS & HTTPS

HTTP/2 ermöglicht Multiplexing und Header-Kompression – deutlich schneller als HTTP/1.1. Erfordert SSL.

HTTP/3 nutzt QUIC über UDP – noch schneller, geringere Latenz. Erfordert Nginx ≥ 1.25 und offenen UDP-Port 443.

Fügt Kommentare und Certbot-Befehle für die automatische SSL-Zertifikat-Ausstellung ein.

Weist Browser an, die Seite ausschliesslich über HTTPS aufzurufen. max-age=63072000 = 2 Jahre.

Trägt die Domain in die Browser-Preload-Liste ein. Achtung: Nur aktivieren wenn HTTPS dauerhaft gewährleistet ist.

Performance & Kompression

Komprimiert Textdateien (HTML, CSS, JS, JSON) vor der Übertragung – spart 60–80% Bandbreite.

Brotli bietet bessere Kompressionsraten als Gzip, wird von allen modernen Browsern unterstützt.

Optimiert Browser-Caching: statische Assets (JS/CSS/Bilder) werden lange gecacht, HTML-Seiten immer revalidiert.

Security Header

Fügt HSTS, CSP, X-Frame-Options, X-Content-Type-Options und Referrer-Policy hinzu.

Verhindert XSS-Angriffe durch Einschränkung erlaubter Ressourcen-Quellen.

Kontrolliert welche Referrer-Informationen bei Links weitergegeben werden.

Schränkt Browser-APIs ein (Kamera, Mikrofon, Geolocation etc.) – verhindert Missbrauch durch eingebettete Inhalte.

Aktiviert Cross-Origin-Opener/Embedder/Resource-Policy zur Isolierung gegen Spectre-artige Angriffe.

Älterer XSS-Schutz-Header für IE/Edge. Moderne Browser ignorieren ihn, schadet aber nicht.

Erweiterte Optionen

Leitet die echte Client-IP an den Backend-Server weiter (wichtig hinter Reverse-Proxy).

Leitet den Accept-Language Header des Clients an den Backend-Server weiter – wichtig für mehrsprachige Apps.

Stellt die echte Besucher-IP wieder her, wenn der Traffic über Cloudflare oder einen Reverse-Proxy läuft.

Begrenzt Anfragen pro IP über limit_req_zone – schützt /api und Login-Bereiche vor Überlastung.

Sichert das gesamte Verzeichnis mit Benutzername und Passwort ab.

nginx.conf / sites-available/meine-domain.de
server {
    listen 80;
    listen [::]:80;
    server_name meine-domain.de www.meine-domain.de;
    # Redirect all HTTP traffic to HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;
    server_name meine-domain.de;

    root /var/www/meine-domain.de/html;
    index index.html index.php;

    client_max_body_size 16m;

    # ── SSL – Let's Encrypt (Certbot) ──────────────────────────────────
    # Run: certbot --nginx -d meine-domain.de -d www.meine-domain.de
    # Certbot fills in / manages the paths below automatically.
    ssl_certificate     /etc/letsencrypt/live/meine-domain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/meine-domain.de/privkey.pem;
    include             /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam         /etc/letsencrypt/ssl-dhparams.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/meine-domain.de/chain.pem;

    # ── Gzip Compression ───────────────────────────────────────────────
    gzip on;
    gzip_comp_level 6;
    gzip_min_length 1024;
    gzip_vary on;
    gzip_proxied any;
    gzip_types
        text/plain text/css text/xml text/javascript
        application/javascript application/json application/xml
        image/svg+xml application/manifest+json font/woff2;

    # ── Security Headers ───────────────────────────────────────────────
    add_header X-Frame-Options "DENY" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
    add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
    add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=()" always;
    # Hide nginx version. Note: X-Powered-By from PHP-FPM/upstreams is NOT
    # removed by server_tokens – use the headers-more module for that:
    #   more_clear_headers "X-Powered-By"; "Server";
    server_tokens off;

    # ── Cache-Control ──────────────────────────────────────────────────
    # Fingerprinted assets (content-hash in filename) → cache forever
    location ~* \.(js|css|woff2?|ttf|otf|eot)$ {
        add_header Cache-Control "public, max-age=31536000, immutable";
        access_log off;
        try_files $uri =404;
    }

    # Images & media → 30 days
    location ~* \.(avif|webp|jpe?g|png|gif|svg|ico)$ {
        add_header Cache-Control "public, max-age=2592000";
        access_log off;
        try_files $uri =404;
    }

    # ── Main location ──────────────────────────────────────────────────
    location / {
        add_header Cache-Control "public, max-age=0, must-revalidate";
        try_files $uri $uri/index.html $uri.html =404;
    }

    # ── Reverse Proxy / API Backend ────────────────────────────────────
    location /api {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        # Forward real client IP
        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;
        proxy_set_header Host $http_host;
    }

    # ── Error pages ────────────────────────────────────────────────────
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    # ── OCSP Stapling & Resolver (needs ssl_trusted_certificate above) ──
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 1.1.1.1 8.8.8.8 valid=300s ipv6=off;
    resolver_timeout 5s;
}

Guide & Best Practices

Server Config Generator für Nginx und Apache

Erstelle produktionsreife Webserver-Konfigurationen mit modernen Sicherheits- und Performance-Optionen – passend zur HTTP-/Server-Ebene.

Typische Einsatzfälle

Nützlich beim Aufsetzen neuer vHosts, beim Härten bestehender Server, für HTTPS-Umstellungen und konsistente Security-Header.

So generiert Balou Server-Configs

Du wählst Server und Optionen (HTTPS, HSTS, CSP, Kompression, Caching); Balou generiert eine passende Konfiguration als Ausgangspunkt.

Best Practices für Webserver-Konfiguration

Erzwinge HTTPS und HSTS, aktiviere HTTP/2 und Brotli/Gzip, setze sinnvolle Cache-Header und teste die Konfiguration vor dem Reload.

Häufige Fragen

Nginx oder Apache – wann was?

Nginx glänzt als Reverse-Proxy und für statische Inhalte, Apache punktet mit .htaccess-Flexibilität und breiter Modulunterstützung.

Wie erzwinge ich HTTPS und HSTS?

Per 301-Redirect von HTTP auf HTTPS und dem Header Strict-Transport-Security: max-age=63072000; includeSubDomains; preload.

Brotli oder Gzip?

Brotli komprimiert statische Assets stärker; Gzip dient als breit kompatibler Fallback.

Sind diese Webserver-Fixes immer richtig?

Sie passen zur HTTP-/Server-Ebene (Header, Redirects, TLS-Termination) – DNS-Probleme wie fehlende MX/SPF/DMARC löst kein Webserver.