# Configuration nginx de référence pour colibre.fr + migration decp.info.
#
# Installation (sur le serveur, en root) :
#   cp deploy/nginx-colibre.conf /etc/nginx/sites-available/colibre
#   ln -s /etc/nginx/sites-available/colibre /etc/nginx/sites-enabled/colibre
#   nginx -t && systemctl reload nginx
#
# Les certificats TLS sont gérés par certbot (Let's Encrypt) :
#   certbot --nginx -d colibre.fr -d www.colibre.fr -d decp.info -d www.decp.info
# Obtenir/installer les certificats AVANT d'activer les redirections 301 :
# une 301 vers un https cassé est mise en cache par les navigateurs/Google.

# ---------------------------------------------------------------------------
# 1. Migration decp.info → colibre.fr (301 permanentes, chemin préservé)
#    La structure d'URL est identique entre les deux domaines (rebranding),
#    donc $request_uri suffit : /acheteurs/123 → https://colibre.fr/acheteurs/123.
#    On NE redirige PAS vers la home : chaque ancienne URL garde son équivalent,
#    ce qui transfère l'autorité SEO page par page.
# ---------------------------------------------------------------------------
server {
    listen 80;
    listen [::]:80;
    server_name decp.info www.decp.info;
    # Laisser certbot répondre aux challenges ACME avant la redirection.
    location /.well-known/acme-challenge/ { root /var/www/certbot; }
    location / { return 301 https://colibre.fr$request_uri; }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name decp.info www.decp.info;

    ssl_certificate     /etc/letsencrypt/live/colibre.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/colibre.fr/privkey.pem;

    return 301 https://colibre.fr$request_uri;
}

# ---------------------------------------------------------------------------
# 1b. Migration test.decp.info → test.colibre.fr (302 temporaire, chemin
#     préservé). Contrairement à la prod (section 1), on reste en 302 tant
#     que l'environnement de test est susceptible de bouger, pour ne pas
#     risquer un cache navigateur/moteur sur une redirection qui n'est pas
#     encore définitive.
#     Nécessite un certificat couvrant test.colibre.fr (et test.decp.info
#     pour le vhost 443 ci-dessous), par ex. :
#       certbot --nginx -d test.colibre.fr -d test.decp.info
# ---------------------------------------------------------------------------
server {
    listen 80;
    listen [::]:80;
    server_name test.decp.info;
    location /.well-known/acme-challenge/ { root /var/www/certbot; }
    location / { return 302 https://test.colibre.fr$request_uri; }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name test.decp.info;

    ssl_certificate     /etc/letsencrypt/live/test.colibre.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/test.colibre.fr/privkey.pem;

    return 302 https://test.colibre.fr$request_uri;
}

# ---------------------------------------------------------------------------
# 2. www.colibre.fr → colibre.fr (canonicalisation : un seul hôte indexé)
# ---------------------------------------------------------------------------
server {
    listen 80;
    listen [::]:80;
    server_name colibre.fr www.colibre.fr;
    location /.well-known/acme-challenge/ { root /var/www/certbot; }
    location / { return 301 https://colibre.fr$request_uri; }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name www.colibre.fr;

    ssl_certificate     /etc/letsencrypt/live/colibre.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/colibre.fr/privkey.pem;

    return 301 https://colibre.fr$request_uri;
}

# ---------------------------------------------------------------------------
# 3. Hôte canonique : https://colibre.fr → application Dash (gunicorn)
# ---------------------------------------------------------------------------
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name colibre.fr;

    ssl_certificate     /etc/letsencrypt/live/colibre.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/colibre.fr/privkey.pem;

    # Le sitemap acheteurs/titulaires peut être volumineux : autoriser de
    # gros corps de réponse en proxy et des timeouts généreux.
    proxy_read_timeout 120s;

    location / {
        # gunicorn app:server — adapter le bind à l'unit systemd colibre.
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host              $host;
        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;
    }
}
