⚡ 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
Erzwingt eine sichere SSL/TLS-Verbindung durch automatische 301-Weiterleitungen.
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.
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.
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.
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.
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.