Configurer Nginx comme proxy inverse et serveur web - Guide complet
Nginx est l'un des serveurs web les plus utilisés au monde, connu pour sa rapidité, sa stabilité et sa polyvalence. Que vous souhaitiez héberger un site web, placer une API derrière un reverse proxy ou gérer plusieurs services via un seul serveur – Nginx offre la solution. Dans cet article, nous expliquons pas à pas comment configurer Nginx comme reverse proxy et comme serveur web, avec des conseils pratiques pour des performances optimales.
Qu'est-ce que Nginx et pourquoi choisir un reverse proxy ?
Nginx est un serveur web open-source qui fonctionne également comme reverse proxy, répartiteur de charge et outil de cache. Il est léger et peut gérer des milliers de connexions simultanées, ce qui le rend idéal pour les applications web modernes.
Un reverse proxy sert d'intermédiaire entre les clients et les serveurs backend. Cela offre des avantages tels que :
- Sécurité améliorée (masque les serveurs backend)
- Répartition de charge (distribue le trafic sur plusieurs serveurs)
- Mise en cache (accélère les temps de chargement)
- Terminaison SSL (simplifie la gestion des certificats)
Installer Nginx sur votre serveur
Avant de pouvoir utiliser Nginx comme reverse proxy ou serveur web, il doit être installé. Voici les commandes pour les distributions Linux populaires :
Ubuntu/Debian
sudo apt update
sudo apt install nginx
CentOS/RHEL sudo yum install epel-release sudo yum install nginx
Démarrer et activer Nginx sudo systemctl start nginx sudo systemctl enable nginx
Vérifiez que Nginx tourne en ouvrant l'adresse IP de votre serveur dans un navigateur. Vous devriez voir la page d'accueil.
Configurer Nginx comme serveur web
Par défaut, Nginx sert les fichiers depuis /var/www/html. Configurons un site web de base :
- Créez un répertoire pour votre site :
sudo mkdir -p /var/www/mijnsite.nl/html - Définissez les permissions correctes :
sudo chown -R $USER:$USER /var/www/mijnsite.nl/html - Créez un fichier de test
index.html - Créez un bloc serveur (hôte virtuel) dans
/etc/nginx/sites-available/mijnsite.nl:server { listen 80; server_name mijnsite.nl www.mijnsite.nl; root /var/www/mijnsite.nl/html; index index.html; location / { try_files $uri $uri/ =404; } } - Activez la configuration :
sudo ln -s /etc/nginx/sites-available/mijnsite.nl /etc/nginx/sites-enabled/ - Testez la configuration et rechargez Nginx :
sudo nginx -t sudo systemctl reload nginx
Configurer Nginx comme reverse proxy
Supposons que vous ayez une application Node.js, Python ou autre qui tourne sur le port 3000. Nous pouvons configurer Nginx comme reverse proxy pour envoyer le trafic vers cette application :
server {
listen 80;
server_name api.mijnsite.nl;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Directives de proxy importantes :
proxy_pass: Définit le serveur backendproxy_set_header: Préserve les en-têtes importantsproxy_http_version: Prend en charge HTTP/1.1 pour de meilleures performances
Configurations avancées de reverse proxy
Répartition de charge
Avec Nginx, vous pouvez répartir le trafic sur plusieurs serveurs backend :
upstream backend_servers {
server backend1.mijnsite.nl:3000;
server backend2.mijnsite.nl:3000;
server backend3.mijnsite.nl:3000;
}
server { location / { proxy_pass http://backend_servers; } }
Terminaison SSL
Les certificats SSL peuvent être gérés de manière centralisée avec Nginx :
server {
listen 443 ssl;
server_name api.mijnsite.nl;
ssl_certificate /chemin/vers/certificat.pem;
ssl_certificate_key /chemin/vers/cle.key;
location / {
proxy_pass http://localhost:3000;
... autres paramètres de proxy
}
}
Conseils pratiques pour l'optimisation de Nginx
- Processus workers : Définissez
worker_processes auto;dansnginx.confpour une utilisation optimale du CPU - Keepalive : Augmentez
keepalive_timeoutpour les connexions HTTP de longue durée - Compression gzip : Activez gzip pour économiser la bande passante
- Mise en cache : Configurez la mise en cache pour les fichiers statiques
- Journalisation : Limitez la journalisation pour de meilleures performances (
access_log off;pour les fichiers statiques)
Problèmes courants et solutions
502 Bad Gateway : Cela signifie généralement que Nginx ne peut pas atteindre le serveur backend. Vérifiez que votre application tourne et que le port dans proxy_pass est correct.
Permission refusée : Assurez-vous que l'utilisateur Nginx (www-data ou nginx) a les droits de lecture sur vos fichiers web.
Erreurs de configuration : Utilisez toujours sudo nginx -t pour tester votre configuration avant de recharger Nginx.
Conclusion
Nginx est un outil puissant qui peut fonctionner à la fois comme serveur web et comme reverse proxy. Avec la bonne configuration, vous pouvez :
- Héberger efficacement des sites web et des applications
- Répartir le trafic de manière optimale sur les serveurs backend
- Améliorer la sécurité et les performances
- Simplifier les architectures complexes
Commencez par les configurations de base dans cet article et étendez progressivement vers des configurations plus avancées. N'oubliez pas de toujours tester les modifications avec nginx -t avant de les activer.