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 :
- Un nouvel "Proxy Host" pour chaque application
- Spécifiez le nom d'hôte (ex: app1.votredomaine.com)
- Indiquez l'adresse IP ou le nom du service Docker et le port
- 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.
Optimisation des performances web : Comment améliorer votre score Google PageSpeed Insights
Comment créer un système de suivi de progression personnalisé sur WordPress
Comment créer un site de réservation performant pour votre location saisonnière
N'hésitez pas à nous contacter.
Nous aussi et c'est évidemment sans engagement !