Colas Mérand
24/07/2025
Docker
NGINX
Nginx Proxy Manager
5 minutes
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.
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 :
Nginx Proxy Manager (NPM) est une interface graphique qui simplifie considérablement la gestion des configurations NGINX. Cette solution open-source permet de :
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.
Voici les étapes essentielles pour configurer correctement un environnement multisite avec Docker et NGINX :
Commencez par créer un réseau Docker dédié qui permettra à vos conteneurs de communiquer entre eux :
docker network create nginx-proxy
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
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
Accédez à l'interface d'administration de NPM (http://votre-serveur:81) et configurez :
Pour tirer le meilleur parti de votre infrastructure, voici quelques optimisations que nous recommandons chez Platane :
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;
}
}
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;
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';";
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.
Voici quelques problèmes fréquemment rencontrés et leurs solutions :
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
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.
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;
}
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.
Vous préférez discuter de vive voix ? Nous aussi et c'est évidemment sans engagement !
Une question, un besoin de renseignements ? N'hésitez pas à nous contacter.