Administration Nginx sur un VPS
Un guide structuré de l'administration Nginx pour les propriétaires de VPS. Couvre le rôle de Nginx, les cas d'usage et les liens vers chaque tutoriel nécessaire en production.
Nginx propulse une grande partie du web. Il sert des fichiers statiques, transmet les requêtes aux applications backend, termine le TLS et répartit la charge entre plusieurs serveurs. Le tout depuis un seul processus avec une faible empreinte mémoire. Ce guide cartographie l'administration Nginx sur un VPS, de l'installation à la supervision en production.
Cette page est une carte. Elle couvre ce que fait Nginx, quand chaque fonctionnalité compte, et renvoie vers des tutoriels dédiés pour chaque sujet. Que vous déployiez votre premier projet perso ou que vous fassiez tourner un point d'inférence IA derrière un reverse proxy, commencez ici et suivez le chemin adapté à votre cas d'usage.
Ce que fait Nginx
Nginx (prononcé « engine-x ») est un serveur web et reverse proxy événementiel. Il a été créé en 2004 pour résoudre le problème C10K : gérer 10 000 connexions simultanées sur un seul serveur. Contrairement aux serveurs à un thread par connexion comme le modèle prefork d'Apache, Nginx utilise une boucle événementielle asynchrone. Un seul processus worker gère des milliers de connexions sans créer un nouveau thread pour chacune.
Sur un VPS, cela signifie :
- Faible consommation mémoire. Un processus worker Nginx utilise généralement 2 à 10 Mo de RAM. Les workers prefork d'Apache en consomment 10 à 40 Mo chacun.
- Haute concurrence. Un seul worker peut gérer des milliers de connexions simultanées. Le facteur limitant est généralement l'OS, pas Nginx.
- Performances prévisibles sous charge. Nginx ne crée pas de nouveaux processus par requête ; la consommation mémoire reste stable quand le trafic augmente.
La version stable actuelle est 1.28.x (1.28.2 en mars 2026). La branche mainline (1.29.x) reçoit les nouvelles fonctionnalités en premier. La branche stable ne reçoit que les correctifs de bugs critiques. Pour un VPS en production, la branche stable est le bon choix.
Tous les tutoriels de cette série ciblent Nginx installé depuis les dépôts officiels sur Debian 12 ou Ubuntu 24.04. Les deux sont activement maintenus et largement déployés sur les serveurs de production. Les dépôts par défaut de la distribution livrent souvent des versions plus anciennes de Nginx. Le dépôt officiel vous donne la dernière version stable avec les clés de signature appropriées.
Cas d'usage principaux
Nginx remplit quatre rôles sur un VPS. La plupart des configurations de production en utilisent deux ou plus simultanément.
Serveur de fichiers statiques
Nginx sert directement depuis le disque les fichiers HTML, CSS, JavaScript, images et polices. L'appel système sendfile déplace les données du disque vers le socket réseau sans les copier à travers l'espace utilisateur. Cela évite de lire le contenu des fichiers en mémoire applicative pour les réécrire ensuite.
Combiné à la compression gzip ou brotli et aux en-têtes de cache (expires, Cache-Control), Nginx distribue les ressources statiques plus vite que n'importe quel serveur applicatif. Un processus Node.js ou Python qui sert des fichiers statiques gaspille des cycles CPU sur un travail que Nginx gère au niveau du noyau.
Pour les sites statiques, les applications monopages ou les frontends full-stack, Nginx est l'outil adapté. Même avec un backend dynamique, déléguer les ressources statiques à Nginx libère votre application pour les requêtes qui nécessitent de la logique.
Reverse proxy
Un reverse proxy se place entre les clients et votre application backend. Nginx reçoit la requête HTTP, la transmet à un processus backend (Node.js, Python, Go, Ruby ou tout service HTTP) et retourne la réponse au client.
Pourquoi ne pas exposer le backend directement ? Plusieurs raisons :
- Terminaison TLS en un seul endroit. Vous configurez les certificats une fois dans Nginx au lieu de le faire dans chaque application.
- Transmission des en-têtes pour passer la vraie IP du client au backend via
X-Real-IPetX-Forwarded-For. Sans cela, votre application ne voit que127.0.0.1. - Mise en mémoire tampon qui absorbe les connexions clients lentes. Nginx lit la réponse complète depuis votre backend rapide, libère la connexion backend, et transmet la réponse au client lent à son rythme. Votre backend traite la requête suivante au lieu d'attendre.
- Support WebSocket qui fonctionne via Nginx avec les bons en-têtes
UpgradeetConnection.
C'est aussi de cette manière que vous exposez une interface web devant des outils IA auto-hébergés. Une instance Ollama tournant sur localhost:11434 reste hors de l'internet public tandis que Nginx gère l'authentification et le HTTPS côté frontend. Le tutoriel Configurer Nginx comme reverse proxy inclut une configuration Ollama complète avec l'ajustement des timeouts pour les requêtes d'inférence longues.
Terminaison TLS
Nginx gère le handshake TLS et le déchiffrement pour que les applications backend reçoivent du HTTP simple sur localhost. Cela centralise la gestion des certificats et décharge les opérations cryptographiques gourmandes en CPU de votre code applicatif.
Le handshake TLS implique de la cryptographie asymétrique (échange de clés RSA ou ECDSA), qui est de plusieurs ordres de grandeur plus coûteuse que le chiffrement symétrique utilisé pour le transfert de données. En confiant cette tâche à Nginx, vos processus backend restent concentrés sur la logique métier.
Avec Let's Encrypt et Certbot, vous obtenez des certificats gratuits à renouvellement automatique. Les directives ssl_certificate et ssl_certificate_key de Nginx pointent vers les fichiers de certificat. Un timer systemd exécute certbot renew automatiquement. Le tutoriel Configurer Let's Encrypt SSL/TLS pour Nginx sur Debian 12 et Ubuntu 24.04 couvre l'installation complète, y compris l'agrafage OCSP et la redirection HTTP vers HTTPS.
Pour les déploiements européens où la souveraineté des données compte, gérer la terminaison TLS sur votre propre VPS signifie que le trafic chiffré n'est déchiffré que sur une infrastructure que vous contrôlez. Aucun CDN ou répartiteur de charge tiers ne voit votre trafic en clair.
Répartiteur de charge
Quand un seul backend ne suffit plus, Nginx distribue les requêtes entre plusieurs serveurs upstream. Il prend en charge trois algorithmes intégrés :
- Round-robin (par défaut) : les requêtes sont envoyées à chaque backend à tour de rôle
- Least connections : les requêtes vont au backend ayant le moins de connexions actives
- IP hash : les requêtes d'une même IP client sont toujours dirigées vers le même backend (utile pour l'affinité de session)
Les vérifications de santé retirent automatiquement les backends non réactifs du pool. Si un backend retourne des erreurs ou ne répond plus, Nginx cesse de lui envoyer du trafic jusqu'à ce qu'il se rétablisse.
Pour la plupart des configurations VPS, la répartition de charge entre en jeu quand vous passez à l'échelle horizontalement avec plusieurs instances applicatives ou que vous déployez en blue-green avec des mises en production sans interruption.
Ce dont vous avez besoin
Avant de commencer n'importe quel tutoriel de cette série, il vous faut :
- Un VPS sous Debian 12 ou Ubuntu 24.04 avec accès root ou sudo. Les offres VPS Virtua Cloud fonctionnent directement pour tout ce qui est couvert ici.
- Un accès SSH avec authentification par clé. L'authentification par mot de passe doit être désactivée. Les bots de force brute commencent à frapper le SSH dans les minutes qui suivent la mise en ligne d'un serveur.
- Un nom de domaine avec un enregistrement A pointant vers l'adresse IP de votre serveur. Nécessaire pour les certificats TLS. Optionnel pour le tutoriel d'installation.
- Une aisance de base avec la ligne de commande Linux : naviguer dans les répertoires, éditer des fichiers avec
vimounano, exécuter des commandes avecsudo.
Si vous débutez avec un VPS, configurez les clés SSH et un pare-feu avant de toucher à Nginx. Un serveur exposé sur Internet sans ces bases est une faille.
La série de tutoriels
Chaque article ci-dessous se concentre sur un sujet. Ils se construisent les uns sur les autres dans l'ordre, mais vous pouvez sauter directement à n'importe quel article si vous avez déjà les prérequis couverts.
1. Installer Nginx
Installez Nginx depuis les dépôts officiels. Couvre Debian 12 et Ubuntu 24.04 avec vérification de la clé GPG, installation via apt, gestion systemd (start, stop, reload, status) et règles de pare-feu pour ufw et nftables. Inclut des étapes de vérification avec curl et ss pour confirmer que Nginx écoute sur les bons ports.
Installer Nginx sur Debian 12 et Ubuntu 24.04 depuis le dépôt officiel
2. Comprendre la structure du fichier de configuration
Avant de modifier quoi que ce soit, comprenez comment Nginx organise sa configuration. Le contexte principal, les blocs events, http, server et location forment une hiérarchie. Les directives définies dans un contexte parent sont héritées par les contextes enfants sauf si elles sont explicitement surchargées. Cet article couvre tous les contextes majeurs (y compris stream et upstream), la directive include pour les configurations modulaires, et le pattern sites-available/sites-enabled utilisé sur Debian et Ubuntu.
Structure des fichiers de configuration Nginx
3. Configurer les blocs serveur
Hébergez plusieurs domaines sur un seul VPS. Les blocs serveur (l'équivalent Nginx des hôtes virtuels Apache) vous permettent de faire tourner des sites séparés avec des configurations, logs d'accès, logs d'erreur et racines documentaires indépendants. Couvre la structure des répertoires, la création des fichiers de blocs serveur, l'activation et la désactivation des sites avec des liens symboliques, la directive default_server, l'ordre de correspondance de server_name et la journalisation par vhost.
Nginx Server Blocks : héberger plusieurs domaines sur un VPS
4. Configurer SSL/TLS avec Let's Encrypt
Ajoutez le HTTPS à vos sites avec Certbot et Let's Encrypt. Couvre les prérequis DNS, l'installation de Certbot via snap (la méthode actuellement recommandée), l'émission de certificats avec le plugin Nginx, le renouvellement automatique via les timers systemd, la redirection HTTP vers HTTPS et l'agrafage OCSP. Chaque étape inclut une commande de vérification.
Configurer Let's Encrypt SSL/TLS pour Nginx sur Debian 12 et Ubuntu 24.04
5. Configurer un reverse proxy
Placez Nginx devant vos applications backend. Couvre la syntaxe proxy_pass, la transmission des en-têtes (X-Real-IP, X-Forwarded-For, X-Forwarded-Proto), le proxy WebSocket avec les en-têtes Upgrade, les contrôles de mise en mémoire tampon (proxy_buffering, proxy_buffer_size) et l'ajustement des timeouts (proxy_connect_timeout, proxy_read_timeout). Inclut un exemple fonctionnel de proxy vers une instance Ollama locale avec des timeouts étendus pour les requêtes d'inférence pouvant durer 30 secondes ou plus.
Configurer Nginx comme reverse proxy
6. Renforcer la sécurité
Verrouillez Nginx au-delà des paramètres par défaut. Chaque directive est associée à la menace spécifique qu'elle atténue. Couvre les en-têtes de sécurité (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy), le masquage des tokens serveur, la désactivation des méthodes HTTP inutilisées, les restrictions d'accès par IP, la sélection des suites de chiffrement TLS selon le profil Modern de Mozilla, et HSTS avec les considérations de préchargement. Vérification via securityheaders.com et SSL Labs.
Durcissement de la sécurité Nginx sur Ubuntu et Debian
7. Optimiser les performances
Optimisez Nginx pour le trafic de production. Couvre worker_processes auto et le dimensionnement de worker_connections, epoll et multi_accept, le réglage du keepalive, la configuration gzip (niveaux de compression, types MIME, taille minimale), l'installation du module brotli, la mise en cache des fichiers statiques avec expires et Cache-Control, open_file_cache pour réduire les I/O disque, le dimensionnement des buffers proxy et l'activation de HTTP/2. Inclut une méthodologie de benchmark avec wrk pour mesurer l'impact de chaque changement.
Pour les sites à fort trafic, un VPS haute performance vous donne plus de marge pour les handshakes TLS et la compression.
Optimisation des performances Nginx sur un VPS
8. Limitation de débit et protection DDoS
Protégez vos endpoints contre les abus et les attaques volumétriques. Couvre limit_req_zone et limit_req avec les paramètres burst et nodelay, limit_conn pour le throttling de connexions, les pages d'erreur 429 personnalisées, le mode dry_run pour tester en toute sécurité sans bloquer le vrai trafic, et l'intégration fail2ban avec un filtre et une configuration jail fonctionnels pour bannir les récidivistes au niveau du pare-feu.
Limiter le débit avec Nginx et se protéger contre les DDoS
9. Journalisation et supervision
Mettez en place une observabilité de niveau production. Couvre les définitions personnalisées de log_format incluant un format JSON structuré avec escape=json (prêt pour les collecteurs de logs comme Filebeat ou Vector), la journalisation conditionnelle avec map pour filtrer les health checks et les ressources statiques, la rotation des logs avec une configuration logrotate, l'analyse en temps réel avec GoAccess, et les métriques Prometheus via le module stub_status et prometheus-nginxlog-exporter.
10. Aide-mémoire Nginx
Référence rapide pour les opérations quotidiennes. Commandes systemd, extraits de configuration courants (redirection, proxy_pass, bloc SSL, limitation de débit, gzip), emplacements des fichiers de log, débogage avec nginx -T (afficher la configuration fusionnée complète) et curl -I (inspecter les en-têtes de réponse), et codes d'erreur courants (502, 504, 413, 403) avec leurs causes et correctifs spécifiques à Nginx.
Aide-mémoire Nginx : commandes, extraits de configuration et corrections d'erreurs
Quand déléguer la gestion
Administrer Nginx en production implique de suivre les correctifs de sécurité, les renouvellements de certificats, la dérive de configuration et la rotation des logs. Si vous préférez vous concentrer sur le code de votre application et laisser l'infrastructure à quelqu'un d'autre, l'hébergement de serveurs infogérés s'en charge pour vous. Vous conservez toute la flexibilité de Nginx sans les contraintes de maintenance.
Par où commencer
Vous déployez votre premier site ? Commencez par le tutoriel d'installation (Installer Nginx sur Debian 12 et Ubuntu 24.04 depuis le dépôt officiel) et suivez la série dans l'ordre.
Nginx tourne déjà ? Allez directement au sujet dont vous avez besoin. L'article sur la structure de configuration (Structure des fichiers de configuration Nginx) comble les lacunes si vous avez copié-collé des configs sans comprendre la hiérarchie.
Vous faites tourner des charges IA ? Allez directement au tutoriel reverse proxy (Configurer Nginx comme reverse proxy) pour la configuration reverse proxy Ollama. Puis sécurisez le tout avec le guide de renforcement (Durcissement de la sécurité Nginx sur Ubuntu et Debian) et le tutoriel de limitation de débit (Limiter le débit avec Nginx et se protéger contre les DDoS).
Besoin d'une commande rapide ? L'aide-mémoire (Aide-mémoire Nginx : commandes, extraits de configuration et corrections d'erreurs) rassemble tout sur une seule page.
Prêt à essayer ?
Hebergez vos applications web sur un VPS fiable. →Articles associés
- Configurer Nginx comme reverse proxy
- Installer Nginx sur Debian 12 et Ubuntu 24.04 depuis le dépôt officiel
- Structure des fichiers de configuration Nginx
- Nginx Server Blocks : héberger plusieurs domaines sur un VPS
- Configurer Let's Encrypt SSL/TLS pour Nginx sur Debian 12 et Ubuntu 24.04
- Durcissement de la sécurité Nginx sur Ubuntu et Debian
- Aide-mémoire Nginx : commandes, extraits de configuration et corrections d'erreurs
- Optimisation des performances Nginx sur un VPS