# ──────────────────────────────────────────────────────────────────────
# Apache vhost pour socialex.pro
# À copier sur le VPS dans /etc/apache2/sites-available/socialex.pro.conf
# Puis :
#   a2enmod proxy proxy_http rewrite ssl headers
#   a2ensite socialex.pro.conf
#   apachectl configtest && systemctl reload apache2
# ──────────────────────────────────────────────────────────────────────

# HTTP → redirige vers HTTPS
<VirtualHost *:80>
    ServerName socialex.pro
    ServerAlias www.socialex.pro

    RewriteEngine On
    RewriteRule ^/(.*)$ https://socialex.pro/$1 [R=301,L]
</VirtualHost>

# HTTPS www.socialex.pro → redirige vers socialex.pro (URL canonique)
<VirtualHost *:443>
    ServerName www.socialex.pro

    SSLEngine on
    SSLCertificateFile      /etc/cloudflare/socialex.pro.pem
    SSLCertificateKeyFile   /etc/cloudflare/socialex.pro.key

    RewriteEngine On
    RewriteRule ^/(.*)$ https://socialex.pro/$1 [R=301,L]
</VirtualHost>

# HTTPS — reverse proxy vers le container Next.js (localhost:3001)
<VirtualHost *:443>
    ServerName socialex.pro

    ServerAdmin contact@socialex.pro

    # ── SSL (origin certs Cloudflare) ─────────────────────────────────
    SSLEngine on
    SSLCertificateFile      /etc/cloudflare/socialex.pro.pem
    SSLCertificateKeyFile   /etc/cloudflare/socialex.pro.key
    SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite          HIGH:!aNULL:!MD5

    # ── Reverse proxy vers Next.js (container Docker) ─────────────────
    ProxyPreserveHost On
    ProxyRequests Off

    # WebSocket support (HMR n'est pas concerné en prod, mais on prévoit
    # un usage temps réel pour l'espace client en phase 2).
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /(.*) ws://127.0.0.1:3001/$1 [P,L]

    ProxyPass        /  http://127.0.0.1:3001/
    ProxyPassReverse /  http://127.0.0.1:3001/

    # Headers utiles côté Next pour générer les bonnes URLs.
    # On hardcode X-Forwarded-Host à la valeur canonique : le vhost www
    # redirige déjà vers socialex.pro, donc toute requête atteignant ce
    # bloc a forcément Host: socialex.pro. Critique pour Next.js 16 qui
    # compare X-Forwarded-Host à Origin pour les Server Actions.
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Host  "socialex.pro"
    RequestHeader set X-Real-IP         "%{REMOTE_ADDR}s"

    # Sécu de base
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"

    # Limites uploads (documents clients : 25 MB pour laisser large pour les PDF)
    LimitRequestBody 26214400

    ErrorLog  ${APACHE_LOG_DIR}/socialex.pro-error.log
    CustomLog ${APACHE_LOG_DIR}/socialex.pro-access.log combined
</VirtualHost>
