Retour au portfolio
Serveurs Web & Réseaux

Webserver — Serveur HTTP Type Nginx

Un serveur HTTP haute performance et non-bloquant construit en C++98 inspiré de Nginx. Utilise epoll() pour le multiplexage E/S et supporte CGI, uploads de fichiers et traitement de requêtes conforme aux RFC.

Technologies utilisées
C++LinuxHTTP/1.1Socket Programmingepoll
Webserver — Serveur HTTP Type Nginx

Overview

Construire un serveur web de qualité production from scratch révèle ce que les frameworks modernes abstraient : gestion des connexions, parsing des requêtes, conformité protocolaire et maintien des performances sous charge concurrente. Inspiré par Nginx, ce projet implémente une architecture évolutive utilisant epoll pour gérer efficacement des milliers de connexions client simultanées.

Architecture & capacités

Développé en C++98, le serveur est construit sur des sockets non-bloquants combinés à une boucle d'événements multiplexée pour des E/S haute performance. Il supporte les méthodes HTTP fondamentales (GET, POST, DELETE), un système de configuration flexible inspiré de Nginx (routes, ports, pages d'erreur) et l'exécution CGI pour le contenu dynamique (PHP, Python). Des fonctionnalités supplémentaires incluent des uploads de fichiers sécurisés et une validation stricte des requêtes selon les standards HTTP.

Ce que nous avons appris

Ce projet a fourni une compréhension profonde du fonctionnement interne des serveurs web : gestion de connexions concurrentes, traitement des détails du protocole HTTP et optimisation des performances avec des architectures orientées événements. Il a renforcé nos compétences en programmation réseau bas niveau, gestion des sockets et débogage de systèmes complexes, tout en mettant en lumière les compromis entre performance, évolutivité et complexité du code.

Fonctionnalités clés & compétences

  • Design orienté événements avec epoll pour des milliers de connexions concurrentes
  • Parsing HTTP et génération de réponses orientés RFC
  • Chemin CGI pour l'exécution de contenu dynamique et l'extensibilité
  • Configuration inspirée de Nginx avec hôtes virtuels et correspondance de routes

Envie de créer un projet similaire ?

Je suis disponible pour collaborer sur des applications web, des systèmes automatisés ou des sites performants.