Skip to content

Choix - NGINX

Au sein de l’infrastructure LoutikCLOUD, l’accĂšs depuis l’extĂ©rieur prĂ©sentait un dĂ©fi architectural majeur. Mon accĂšs Internet domestique repose sur une adresse IP publique dynamique, ce qui rend la joignabilitĂ© incertaine. De plus, exposer l’infrastructure nĂ©cessitait une double redirection de ports complexes : depuis la box opĂ©rateur vers le pare-feu OPNsense, puis vers le reverse proxy interne.

Pour professionnaliser l’accĂšs et contourner ces limitations, j’ai fait le choix d’acquĂ©rir un VPS1 chez Infomaniak. Ce serveur dans le cloud agit comme un point d’entrĂ©e externe avec une adresse IP publique fixe et dĂ©diĂ©e. Il me fallait donc dĂ©ployer sur ce VPS un reverse proxy capable d’encaisser le trafic, de le filtrer, puis de le router de maniĂšre sĂ©curisĂ©e vers mon infrastructure locale (derriĂšre OPNsense). Ce composant critique se devait d’ĂȘtre lĂ©ger, hautement automatisable et taillĂ© pour la sĂ©curitĂ© moderne.

ID Type Exigence Description
[REQ-F01] Fonctionnel Pages d’erreur personnalisĂ©es CapacitĂ© Ă  servir des pages web statiques (HTML/CSS) sur-mesure pour les codes d’erreur HTTP (404, 403, 502).
[REQ-F02] Fonctionnel Support HTTP/3 Prise en charge native du protocole HTTP/32 pour garantir des temps de réponse optimaux aux utilisateurs.
[REQ-T01] Technique Compatibilité WAF CrowdSec Intégration fluide avec le moteur de détection et de remédiation CrowdSec3 pour bloquer les IP malveillantes.
[REQ-T02] Technique Provisionnement Ansible Fichiers de configuration lisibles et facilement déployables via des playbooks Ansible4.
[REQ-T03] Technique Empreinte minimale Consommation trÚs faible de la mémoire (RAM) et du processeur (CPU) pour ne pas surcharger le VPS.
  • PrĂ©sentation gĂ©nĂ©rale : Serveur web et reverse proxy open-source, devenu le standard de l’industrie pour les architectures modernes et cloud-native.
  • Fonctionnement : Repose sur une architecture asynchrone et Ă©vĂ©nementielle, lui permettant de gĂ©rer des milliers de connexions avec trĂšs peu de ressources.
  • Profil : OrientĂ© DevOps, idĂ©al pour les infrastructures nĂ©cessitant de la haute performance, du load balancing et une forte personnalisation via des fichiers de configuration clairs.
  • PrĂ©sentation gĂ©nĂ©rale : Solution open-source ultra-spĂ©cialisĂ©e dans la rĂ©partition de charge (Load Balancing) et le proxying TCP/HTTP.
  • Fonctionnement : Conçu pour maximiser la disponibilitĂ© et les performances rĂ©seau, il analyse et dispatche le trafic avec une prĂ©cision chirurgicale.
  • Profil : Architectures d’entreprise Ă  trĂšs haut trafic oĂč la fiabilitĂ© absolue du routage est la prioritĂ©, souvent utilisĂ© en amont d’autres serveurs web.
  • PrĂ©sentation gĂ©nĂ©rale : Serveur web moderne Ă©crit en Go, cĂ©lĂšbre pour sa gestion automatique des certificats HTTPS (Let’s Encrypt).
  • Fonctionnement : Met l’accent sur la simplicitĂ© “out-of-the-box” (prĂȘt Ă  l’emploi) avec un fichier de configuration (Caddyfile) extrĂȘmement minimaliste.
  • Profil : DĂ©veloppeurs et administrateurs cherchant Ă  dĂ©ployer des services rapidement sans se soucier de la gestion des certificats SSL/TLS.
  • PrĂ©sentation gĂ©nĂ©rale : Le serveur web historique, extrĂȘmement modulaire et robuste, pilier de l’Internet depuis les annĂ©es 90.
  • Fonctionnement : Fonctionne historiquement de maniĂšre synchrone (un processus/thread par connexion), bien qu’il puisse ĂȘtre optimisĂ©. Il gĂšre de nombreux modules dynamiques.
  • Profil : HĂ©bergement mutualisĂ© traditionnel, applications nĂ©cessitant des rĂšgles .htaccess spĂ©cifiques ou des architectures Legacy.
Exigence NGINX HAProxy Caddy Apache
[REQ-F01 (Pages sur-mesure)] ValidĂ© (Natif et trĂšs simple) Évaluation (Possible mais moins adaptĂ© pour du statique) ValidĂ© ValidĂ©
[REQ-F02 (Support HTTP/3)] ValidĂ© (Module officiel) ValidĂ© ValidĂ© (Natif par dĂ©faut) Évaluation (ExpĂ©rimental/Complexe)
[REQ-T01 (CrowdSec)] Validé (Bouncer officiel mature) Validé (Bouncer officiel) Validé (Bouncer officiel récent) Validé (Bouncer officiel)
[REQ-T02 (Ansible)] ValidĂ© (ÉcosystĂšme DevOps massif) ValidĂ© Évaluation (Configuration parfois “trop magique” Ă  templater) ValidĂ© (Mais syntaxe lourde)
[REQ-T03 (LégÚreté)] Validé Validé (Excellent) Validé Non validé (Plus gourmand)

La solution proposĂ©e pour l’infrastructure est NGINX.

DĂ©ployĂ© directement sur le VPS Infomaniak, NGINX s’intĂšgre parfaitement comme bouclier frontal pour LoutikCLOUD. Son intĂ©gration est entiĂšrement automatisĂ©e via Ansible (rĂŽles et templates Jinja2), ce qui garantit une reproductibilitĂ© totale de la configuration. Le trafic externe arrive sur l’IP publique fixe du VPS, est inspectĂ© par le bouncer CrowdSec intĂ©grĂ© Ă  NGINX, puis, s’il est lĂ©gitime, est acheminĂ© de maniĂšre sĂ©curisĂ©e vers mon OPNsense local. De plus, sa capacitĂ© native Ă  agir comme un serveur web statique me permet de servir des pages d’erreurs Ă©lĂ©gantes et brandĂ©es “LoutikCLOUD” sans solliciter l’infrastructure backend. Enfin, la prise en charge de HTTP/3 assure une navigation fluide aux utilisateurs.

Justification du rejet des solutions alternatives :

  • Apache : Son architecture historique basĂ©e sur les processus est beaucoup trop gourmande en ressources pour le simple rĂŽle de reverse proxy sur un petit VPS. Sa syntaxe de configuration est Ă©galement trop verbeuse pour une automatisation Ă©lĂ©gante.
  • HAProxy : Bien qu’il soit le roi incontestĂ© des performances rĂ©seau pures, il est moins intuitif que NGINX pour servir de simples pages HTML statiques (pages d’erreur 404/502). Il s’agit d’un outil surdimensionnĂ© pour ce besoin spĂ©cifique.
  • Caddy : Caddy est fantastique pour sa gestion automatique du HTTPS. Cependant, la magie de sa configuration (qui fait beaucoup de choses par dĂ©faut) rend parfois le templating via Ansible moins granulaire et explicite qu’avec les blocs server et location trĂšs structurĂ©s de NGINX. L’intĂ©gration de CrowdSec sur NGINX dispose Ă©galement d’une antĂ©rioritĂ© et d’une communautĂ© DevSecOps plus vaste.

  1. VPS (Virtual Private Server) : Un serveur virtuel louĂ© chez un fournisseur cloud (comme Infomaniak), offrant une machine disponible en permanence sur Internet avec une adresse IP fixe. ↩

  2. HTTP/3 : La derniĂšre Ă©volution du langage d’Internet. Il rend le chargement des sites plus rapide et plus rĂ©sistant aux coupures rĂ©seau en utilisant un protocole moderne (QUIC). ↩

  3. WAF (Web Application Firewall) : Un bouclier de sĂ©curitĂ© qui analyse en temps rĂ©el les requĂȘtes web pour bloquer les comportements suspects et les cyberattaques. ↩

  4. Ansible : Un outil d’Infrastructure as Code (IaC) qui permet de configurer et dĂ©ployer des serveurs de maniĂšre totalement automatisĂ©e grĂące Ă  du code. ↩