Balou Tools

Générateur de Configuration Serveur

Génère des configurations Nginx et des règles Apache .htaccess pour les redirections et en-têtes de sécurité.

Générateur de Configuration Serveur

Créez des fichiers de configuration prêts à l'emploi pour Nginx et Apache (.htaccess) avec les meilleures pratiques de sécurité et de performance.

Configuration

Préréglages rapides
Paramètres de base

Force une connexion SSL/TLS sécurisée via des redirections 301 automatiques.

SSL / TLS & HTTPS

HTTP/2 permet le multiplexage et la compression des en-têtes – bien plus rapide que HTTP/1.1. Nécessite SSL.

HTTP/3 utilise QUIC sur UDP – encore plus rapide, latence réduite. Nécessite Nginx ≥ 1.25 et le port UDP 443 ouvert.

Ajoute des commentaires et des commandes Certbot pour l'émission automatique de certificats SSL.

Indique aux navigateurs d'accéder uniquement au site via HTTPS. max-age=63072000 = 2 ans.

Soumet le domaine à la liste de préchargement du navigateur. Attention : n'activer que si HTTPS est garanti en permanence.

Performance & Compression

Compresse les fichiers texte (HTML, CSS, JS, JSON) avant le transfert – économise 60–80% de bande passante.

Brotli offre de meilleurs taux de compression que Gzip, supporté par tous les navigateurs modernes.

Optimise la mise en cache du navigateur : les ressources statiques (JS/CSS/images) sont mises en cache longtemps, les pages HTML toujours revalidées.

En-têtes de sécurité

Ajoute HSTS, CSP, X-Frame-Options, X-Content-Type-Options et Referrer-Policy.

Prévient les attaques XSS en restreignant les sources de ressources autorisées.

Contrôle quelles informations de référent sont transmises lors des liens.

Restreint les API du navigateur (caméra, microphone, géolocalisation etc.) – empêche les abus par le contenu intégré.

Active Cross-Origin-Opener/Embedder/Resource-Policy pour isoler contre les attaques de type Spectre.

Ancien en-tête de protection XSS pour IE/Edge. Les navigateurs modernes l'ignorent, mais ça ne fait pas de mal.

Options avancées

Transfère la vraie IP du client au serveur backend (important derrière un reverse proxy).

Transfère l'en-tête Accept-Language du client au serveur backend – important pour les applications multilingues.

Restaure la vraie IP du visiteur lorsque le trafic passe par Cloudflare ou un reverse proxy.

Limite les requêtes par IP via limit_req_zone – protège /api et les zones de connexion contre la surcharge.

Sécurise l'ensemble du répertoire avec un nom d'utilisateur et un mot de passe.

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 & bonnes pratiques

Server Config Generator pour Nginx et Apache

Créez des configurations serveur prêtes pour la production avec des options modernes de sécurité et performance, adaptées à la couche HTTP/serveur.

Cas d’utilisation typiques

Utile pour mettre en place de nouveaux vhosts, durcir des serveurs existants, passer à HTTPS et standardiser les en-têtes de sécurité.

Comment Balou génère les configs serveur

Vous choisissez serveur et options (HTTPS, HSTS, CSP, compression, cache) ; Balou génère une configuration adaptée comme point de départ.

Bonnes pratiques de configuration serveur

Imposez HTTPS et HSTS, activez HTTP/2 et Brotli/Gzip, définissez des en-têtes de cache pertinents et testez avant le reload.

Questions fréquentes

Nginx ou Apache – lequel choisir ?

Nginx excelle comme reverse proxy et pour le statique, Apache brille par la flexibilité .htaccess et un large support de modules.

Comment imposer HTTPS et HSTS ?

Via une redirection 301 de HTTP vers HTTPS et l’en-tête Strict-Transport-Security: max-age=63072000; includeSubDomains; preload.

Brotli ou Gzip ?

Brotli compresse davantage les assets statiques ; Gzip sert de repli largement compatible.

Ces correctifs serveur sont-ils toujours justes ?

Ils relèvent de la couche HTTP/serveur (en-têtes, redirections, terminaison TLS) – un problème DNS comme MX/SPF/DMARC manquant ne se règle pas côté serveur web.