Aller au contenu

Nginx & Reverse Proxy

Rôle de Nginx dans l'architecture

Nginx joue le rôle de reverse proxy : il reçoit toutes les requêtes entrantes et les redirige vers le bon service selon le nom de domaine.

graph TD
    Internet([🌐 Internet]) --> NG[Nginx\nReverse Proxy\nPort 80 / 443]

    NG -->|darewatchgroup.com| G[drwh_group\nPort 3001]
    NG -->|tech.darewatchgroup.com| T[drwh_tech\nPort 3003]
    NG -->|immo.darewatchgroup.com| I[drwh_immo\nPort 3002]

    NG -->|HTTP 80| REDIR[Redirection\nvers HTTPS 443]
    REDIR --> NG

    style Internet fill:#e8f4f8
    style NG fill:#2d2e2e,color:#fff
    style G fill:#e74c3c,color:#fff
    style T fill:#0066FF,color:#fff
    style I fill:#27ae60,color:#fff
    style REDIR fill:#f39c12,color:#fff

Fichiers de configuration

infra/nginx/
├── nginx.conf             ← Configuration globale Nginx
├── conf.d/
│   ├── drwh_group.conf    ← Virtual host pour drwh_group
│   ├── drwh_tech.conf     ← Virtual host pour drwh_tech
│   └── drwh_immo.conf     ← Virtual host pour drwh_immo
├── certs/
│   ├── fullchain.pem      ← Certificat TLS
│   └── privkey.pem        ← Clé privée TLS
└── www/
    └── .well-known/
        └── acme-challenge/ ← Webroot pour Let's Encrypt

Configuration d'un virtual host

Exemple de configuration pour drwh_tech :

# infra/nginx/conf.d/drwh_tech.conf

# Redirection HTTP → HTTPS
server {
    listen 80;
    server_name tech.darewatchgroup.com;

    # Pour Let's Encrypt
    location /.well-known/acme-challenge/ {
        root /var/www/acme;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

# HTTPS
server {
    listen 443 ssl http2;
    server_name tech.darewatchgroup.com;

    ssl_certificate     /etc/nginx/certs/fullchain.pem;
    ssl_certificate_key /etc/nginx/certs/privkey.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;

    # Proxy vers le conteneur drwh_tech
    location / {
        proxy_pass         http://drwhtch_tech:3003;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection 'upgrade';
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_cache_bypass $http_upgrade;
    }
}

Routing par domaine

flowchart LR
    A[darewatchgroup.com] -->|Nginx route| G[drwh_group:3001]
    B[tech.darewatchgroup.com] -->|Nginx route| T[drwhtch_tech:3003]
    C[immo.darewatchgroup.com] -->|Nginx route| I[drwh_immo:3002]
    style G fill:#e74c3c,color:#fff
    style T fill:#0066FF,color:#fff
    style I fill:#27ae60,color:#fff

Gestion des noms de domaine et sous-domaines

DNS — Pointage vers le serveur

Pour que vos domaines pointent vers votre serveur, configurez les enregistrements DNS chez votre registrar :

Type Nom Valeur TTL
A darewatchgroup.com IP de votre serveur 300
A tech.darewatchgroup.com IP de votre serveur 300
A immo.darewatchgroup.com IP de votre serveur 300
A www.immo.darewatchgroup.com IP de votre serveur 300

Trouver l'IP de votre serveur

Votre hébergeur (OVH, DigitalOcean…) vous fournit l'adresse IP dans le tableau de bord de votre VPS.

Propagation DNS

Après modification des DNS, la propagation peut prendre de quelques minutes à 48 heures.


Renouvellement automatique des certificats TLS

En production, configurez un cron pour renouveler automatiquement les certificats :

# Vérifier le renouvellement (dans crontab)
0 3 * * * certbot renew --quiet && docker compose restart drwh_gateway

Liens complémentaires