Optimiser votre infrastructure Docker avec NGINX et NPM : Guide pratique pour le multisite

Colas Mérand

24/07/2025

Docker

NGINX

Nginx Proxy Manager

5 minutes

Optimiser votre infrastructure Docker avec NGINX et NPM : Guide pratique pour le multisite

Dans un monde où le déploiement d'applications web devient de plus en plus complexe, la mise en place d'une infrastructure robuste et évolutive est essentielle. Chez Platane, nous accompagnons régulièrement nos clients dans l'optimisation de leurs environnements Docker, notamment lorsqu'il s'agit de configurer plusieurs applications sur un même serveur. Aujourd'hui, nous souhaitons partager notre expertise sur la configuration de NGINX et Nginx Proxy Manager (NPM) pour des applications Docker en multisite.

Pourquoi utiliser NGINX avec Docker pour une configuration multisite ?

NGINX s'est imposé comme l'un des serveurs web les plus performants et polyvalents du marché. Lorsqu'il est couplé à Docker, il offre une flexibilité remarquable pour héberger plusieurs applications sur une même infrastructure. Les avantages sont nombreux :

  • Isolation des applications : chaque conteneur fonctionne de manière indépendante
  • Optimisation des ressources : partage efficace des ressources du serveur
  • Facilité de maintenance : mise à jour et déploiement simplifiés
  • Scalabilité : possibilité d'ajouter de nouvelles applications sans perturber l'existant

Nginx Proxy Manager : simplifier la gestion de vos configurations

Nginx Proxy Manager (NPM) est une interface graphique qui simplifie considérablement la gestion des configurations NGINX. Cette solution open-source permet de :

  • Gérer facilement les hôtes proxy
  • Configurer automatiquement les certificats SSL Let's Encrypt
  • Rediriger le trafic HTTP vers HTTPS
  • Mettre en place des règles d'accès personnalisées

Pour les projets nécessitant une configuration multisite rapide et efficace, NPM représente un gain de temps considérable par rapport à la configuration manuelle des fichiers NGINX.

Configuration pratique : NGINX et Docker en multisite

Voici les étapes essentielles pour configurer correctement un environnement multisite avec Docker et NGINX :

1. Mise en place du réseau Docker

Commencez par créer un réseau Docker dédié qui permettra à vos conteneurs de communiquer entre eux :

docker network create nginx-proxy

2. Configuration de Nginx Proxy Manager

Créez un fichier docker-compose.yml pour NPM :

version: '3'
services:
  nginx-proxy-manager:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'  # Interface d'administration
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - nginx-proxy

networks:
  nginx-proxy:
    external: true

Lancez NPM avec :

docker-compose up -d

3. Configuration de vos applications Docker

Pour chaque application, créez un fichier docker-compose.yml distinct. Voici un exemple pour une application web :

version: '3'
services:
  app1:
    image: 'votre-image-app:latest'
    restart: unless-stopped
    environment:
      - VIRTUAL_HOST=app1.votredomaine.com
    networks:
      - nginx-proxy
    # Autres configurations spécifiques à votre application

networks:
  nginx-proxy:
    external: true

4. Configuration des hôtes dans NPM

Accédez à l'interface d'administration de NPM (http://votre-serveur:81) et configurez :

  1. Un nouvel "Proxy Host" pour chaque application
  2. Spécifiez le nom d'hôte (ex: app1.votredomaine.com)
  3. Indiquez l'adresse IP ou le nom du service Docker et le port
  4. Configurez les certificats SSL si nécessaire

Optimisations avancées pour votre configuration multisite

Pour tirer le meilleur parti de votre infrastructure, voici quelques optimisations que nous recommandons chez Platane :

Mise en cache intelligente

Configurez la mise en cache NGINX pour améliorer les performances :

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g;

server {
    # Configuration de base
    
    location /static/ {
        proxy_cache STATIC;
        proxy_cache_valid 200 1d;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        add_header X-Cache-Status $upstream_cache_status;
    }
}

Compression des réponses

Activez la compression gzip pour réduire la taille des réponses :

gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
  application/javascript
  application/json
  application/x-javascript
  application/xml
  text/css
  text/javascript
  text/plain
  text/xml;

Sécurisation de vos applications

Ajoutez des en-têtes de sécurité pour protéger vos applications :

add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Content-Security-Policy "default-src 'self';";

Retour d'expérience : cas concrets chez Platane

Notre expertise en matière de configuration Docker et NGINX s'est forgée à travers de nombreux projets. Par exemple, pour Epictory, une plateforme de génération de posters basés sur des parcours Strava, nous avons mis en place une infrastructure Docker complexe avec plusieurs services interconnectés. La configuration NGINX a joué un rôle crucial pour assurer des performances optimales et une haute disponibilité.

De même, pour Dealt, une marketplace de jobbing en API, nous avons déployé une architecture microservices conteneurisée où NGINX servait de point d'entrée unique, routant les requêtes vers les différents services backend. Cette approche a permis d'obtenir une scalabilité horizontale efficace et une maintenance simplifiée.

Pour notre propre plateforme de gestion de contenu automatisée par l'IA, nous utilisons également Docker et NGINX en configuration multisite, ce qui nous permet de déployer rapidement de nouvelles fonctionnalités sans perturber l'environnement de production.

Dépannage courant

Voici quelques problèmes fréquemment rencontrés et leurs solutions :

Problème de connexion entre conteneurs

Si vos conteneurs ne communiquent pas entre eux, vérifiez qu'ils sont bien sur le même réseau Docker :

docker network inspect nginx-proxy

Certificats SSL non renouvelés

Pour les certificats Let's Encrypt, assurez-vous que le volume de données est correctement monté et que les ports 80 et 443 sont accessibles depuis l'extérieur.

Problèmes de performance

Si vous constatez des ralentissements, ajustez les paramètres de worker_connections et worker_processes dans la configuration NGINX :

worker_processes auto;
events {
    worker_connections 1024;
}

Conclusion

La configuration d'un environnement Docker multisite avec NGINX et NPM peut sembler complexe au premier abord, mais avec les bonnes pratiques et une approche méthodique, elle devient un puissant levier pour optimiser vos déploiements web. Chez Platane, nous avons développé une expertise pointue dans ce domaine, permettant à nos clients de bénéficier d'infrastructures robustes, évolutives et faciles à maintenir.

Que vous lanciez deux applications simples ou une architecture microservices complexe, les principes restent les mêmes : isolation, optimisation des ressources et simplicité de maintenance.

Vous avez un projet nécessitant une expertise en Docker, NGINX ou plus généralement en développement web ? N'hésitez pas à nous contacter via notre formulaire de contact pour échanger sur vos besoins. Notre équipe d'experts se fera un plaisir de vous accompagner dans la réalisation de vos projets, en apportant des solutions sur mesure qui allient technologie de pointe et créativité, le tout au service de vos objectifs.

Le BlogDes infos, des actus, du fun !

L'avenir de l'internet : IA, Machine Learning et développement web

L'intelligence artificielle et le Machine Learning redéfinissent l'expérience sur Internet, offrant des possibilités inédites en matière de développement web. Examinons comment ces technologies émergentes façonnent l'avenir de l'internet et transforment la création de sites web.

read the article

Extraction automatique de données PDF vers Excel : les défis de l'IA hors ligne et de la fiabilité

Comment concevoir une solution d'intelligence artificielle capable d'extraire des données de PDF complexes vers Excel, en mode hors ligne, tout en garantissant fiabilité et traçabilité des informations incertaines.
read the article
Image de couverture de l'article de blog

Agents vocaux IA pour la qualification de prospects : enjeux, architecture et bonnes pratiques

Découvrez comment concevoir et déployer un agent vocal IA performant pour automatiser la qualification de prospects via des appels sortants, avec une intégration CRM sécurisée et conforme RGPD.
read the article

Contact usHello?

Send us a message

optional

Book a meeting

Prefer to talk it over? So do we — and it's obviously no strings attached!

Call us

A question or need more information? Don't hesitate to contact us.

Logo Activateur France Num

France Num Activator

Platane has joined the France Num initiative to support small and medium-sized enterprises in their digital transformation: diagnostics, training and financial aid.

Why call on a digital expert referenced by France Num?
logo de Platane.io
2 b rue Poullain Duparc - 35000, Rennes
69 rue des Tourterelles - 86000, Saint-Benoit
+33 7 70 48 29 48
Find us on
AWS Certified
Scaleway CertifiedCertifié(e) Access42Certifié(e) Opquast

Certified web quality expertise for high-performing and accessible websites

Agréé Crédit Impôt Innovation

Innovation Tax Credit approved