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

Image de couverture de l'article 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 !
Image de couverture de l'article de blog

Optimisation des performances web : Comment améliorer votre score Google PageSpeed Insights

Découvrez comment optimiser les performances de votre site web pour améliorer vos scores sur Google PageSpeed Insights, tant sur mobile que sur desktop, grâce à l'expertise de l'agence Platane.
lire l’article
Image de couverture de l'article de blog

Comment créer un système de suivi de progression personnalisé sur WordPress

Découvrez comment implémenter un système de suivi de progression avec contrôle d'accès sur WordPress, permettant à vos utilisateurs de suivre leur avancement dans des cours ou formations en ligne.
lire l’article
Image de couverture de l'article de blog

Comment créer un site de réservation performant pour votre location saisonnière

Guide complet pour développer un site de réservation en ligne pour locations saisonnières, avec calendrier de disponibilité, paiement sécurisé et interface intuitive.
lire l’article
Nous contacterOui allo ?
Nous appeler
Une question, un besoin de renseignements ?
N'hésitez pas à nous contacter.
Nous envoyer un message
facultatif
Prendre rendez-vous
Vous préférez discuter de vive voix ?
Nous aussi et c'est évidemment sans engagement !
logo de Platane.io
2 b rue Poullain Duparc - 35000, Rennes
69 rue des Tourterelles - 86000, Saint-Benoit
06 81 50 37 23

Expertise qualité web certifiée pour des sites performants et accessibles

Mathilde Louradour - Certifié(e) Opquast
Retrouvez-nous sur