29 septembre 2025

Architecture NGINX : une exploration technique avancée

Nous comprenons pourquoi NGINX est bien plus qu’un simple serveur Web : grâce à son architecture événementielle et modulaire, il garantit des performances élevées, une évolutivité et une fiabilité dans les infrastructures modernes à haute concurrence.

NGINX est bien plus qu'un simple serveur web : c'est un moteur de distribution d'applications, un proxy inverse, un équilibreur de charge et une couche de mise en cache. Sa popularité repose en grande partie sur son architecture interne conçue pour une évolutivité optimale. Dans cet article, nous analyserons chaque composant clé de l'architecture de NGINX, ses stratégies de concurrence et leurs implications sur les performances des infrastructures web modernes.

Aperçu architectural : modèles maître, travailleur et événementiel

À la base de l'architecture de Nginx nous trouvons une distinction claire entre les processus maître et un ou plusieurs processus de travail, ce qui est l’une des principales raisons de son efficacité et de sa stabilité.

Architecture NGINX

Processus maître

Il processus maître Il ne gère pas directement les requêtes HTTP/HTTPS des clients, mais effectue des tâches d'administration et de coordination. Ses principales responsabilités incluent :

  • Analyse de la configuration:Le maître lit les fichiers de configuration, vérifie la syntaxe et initialise les paramètres nécessaires.

  • Gestion des sockets d'écoute: ouvre les ports réseau sur lesquels les clients envoient des requêtes (par exemple 80 pour HTTP, 443 pour HTTPS) et partage les descripteurs de fichiers avec les processus de travail.

  • Créer et superviser les travailleurs: Démarre les processus de travail en fonction du numéro configuré et vérifie leur statut.

  • Gestion des plantages et des redémarrages:si un travailleur venait à se terminer de manière inattendue, le maître se charge de le régénérer sans interrompre le service.

  • Rechargement gracieux de la configuration sans temps d'arrêtPermet d'appliquer des modifications de configuration sans fermer brutalement les connexions existantes. Les nouveaux workers démarrent avec la nouvelle configuration, tandis que les existants complètent les requêtes en cours avant la fermeture.

Cette architecture rend NGINX hautement fiable, car elle sépare les tâches de gestion et de supervision (master) du travail intensif de traitement des requêtes (worker).

Processus de travail

I processus de travail, contrairement à de nombreux serveurs traditionnels qui créent un thread ou un processus pour chaque connexion, fonctionnent selon un monothread, piloté par les événements. Cela signifie que chaque travailleur utilise un boucle d'événements pour surveiller simultanément de nombreuses connexions entrantes et sortantes, en utilisant des techniques d'E/S non bloquantes.

En pratique, au lieu de « dédier » un thread à chaque client, le worker écoute les événements d'E/S (par exemple, données prêtes à être lues, socket prêt à être écrit) et les gère au fur et à mesure. Grâce à cette approche, un seul worker peut gérer les événements. des milliers de connexions simultanées avec une consommation de mémoire minimale et sans la surcharge de changement de contexte typique des modèles multithread.

Les primitives utilisées pour le multiplexage varient en fonction du système d'exploitation :

  • époll sous Linux,

  • file d'attente sur FreeBSD et macOS,

  • sélectionner/interroger comme solution de secours sur les anciennes plateformes.

Dans les environnements multiprocesseur ou sur les serveurs modernes avec de nombreux cœurs, il est courant de configurer le paramètre :

travailleur_processes auto ;

De cette façon, NGINX aligne automatiquement le nombre de travailleurs sur le cœurs logiques Disponible (incluant éventuellement l'hyperthreading). L'idée est de maximiser la parallélisation en ayant un worker dédié à chaque cœur, répartissant ainsi la charge de manière uniforme.

Il convient toutefois de noter que le nombre idéal de travailleurs peut également dépendre d'autres facteurs : le type de charge (liée au processeur ou aux E/S), la présence de modules supplémentaires, la disponibilité de la mémoire et les caractéristiques du trafic. Pour les environnements à très forte charge, des tests de performance spécifiques sont essentiels pour identifier le meilleur compromis.

La combinaison de maître pour le contrôle e travailleur pour le traitement non bloquant C'est ce qui fait de NGINX l'un des serveurs web et proxys inverses les plus évolutifs et performants du marché. Cette conception évite les goulots d'étranglement des modèles traditionnels de threads par connexion, tout en garantissant résilience, fiabilité e maintenabilité en production.

Gestion des sockets et distribution des événements

L'un des points les plus délicats et fondamentaux à comprendre dans l'architecture de Nginx c'est ainsi que le trafic entrant – généralement sur les ports 80 (HTTP) et 443 (HTTPS) – est acheminé efficacement vers les processus de travail.

Il processus maître est responsable de l'ouverture du prise d'écoute (sockets d'écoute). Autrement dit, il lie les ports configurés aux adresses IP (liaison), préparant ainsi l'infrastructure à recevoir les connexions des clients. Cependant, ce n'est pas le maître qui lit les données de ces sockets : une fois ouverts, les descripteurs de fichiers les associés sont partagés avec les processus de travail via IPC (communication interprocessus) ou par des mécanismes de héritage de descripteur de fichier.

De cette façon, ils sont les travailleur – et non le maître – pour appeler directement la fonction accept() sur des sockets partagés pour établir de nouvelles connexions. Cette conception allège la charge du maître, qui se concentre uniquement sur les tâches de coordination et de supervision.

D'un point de vue opérationnel, chaque travailleur effectue une boucle d'événementsDans ce cycle, le travailleur écoute les événements d'E/S générés par le noyau, en utilisant des mécanismes de multiplexage avancés tels que :

  • époll sous Linux,

  • file d'attente sur BSD et macOS,

  • /dev/sondage sur Solaris,

  • sélectionner/interroger comme solution de repli universelle.

Lorsqu'un socket devient accessible en lecture ou en écriture, ou signale une erreur, la boucle d'événements du worker est notifiée. NGINX gère ensuite la connexion étape par étape :

  1. Lecture des données depuis le socket.

  2. Analyse de la requête HTTP.

  3. Passer par des étapes internes (réécriture, accès, proxy, etc.).

  4. Générer ou transmettre la réponse (vers un backend, un fichier statique, un cache, etc.).

  5. Rédaction de la réponse au client.

  6. Enregistrement final.

Grâce à ce modèle non bloquantLe travailleur ne se retrouve pas bloqué sur une seule connexion lente (par exemple, un client envoyant des données extrêmement lentement ou un réseau congestionné). Au lieu de cela, il continue de traiter d'autres connexions en même temps, optimisant ainsi l'utilisation des ressources CPU et mémoire.

Il s’agit précisément de l’adoption d’unearchitecture pilotée par événements pour représenter le cœur de l'évolutivité de NGINX. Contrairement aux serveurs web traditionnels (tels qu'Apache dans prefork), qui créent un processus ou un thread dédié pour chaque connexion, NGINX peut gérer des dizaines de milliers de connexions simultanément avec un très petit nombre de travailleurs.

Le résultat est un avantage significatif en termes de :

  • Consommation de mémoire:Les travailleurs monothread consomment moins de RAM que des milliers de threads ou de processus parallèles.

  • Efficacité du processeur:il réduit le nombre de changements de contexte entre les processus, ce qui représente une surcharge non négligeable dans les scénarios à fort trafic.

  • Stabilité sous forte charge:Le serveur maintient des latences prévisibles même lorsqu'il y a des centaines de milliers de connexions simultanées.

Cette fonctionnalité rend NGINX particulièrement adapté aux scénarios de déploiement modernes. haute concurrence, tels que les sites Web à fort trafic, les passerelles API, les proxys inverses pour les microservices et les plateformes de streaming.

Phases de traitement des demandes (cycle de vie des demandes)

Lorsqu'un Requête HTTP arrive à NGINX, il n'est pas traité de manière monolithique mais passe par une séquence ordonnée de phases modulaires (phases). Chaque phase représente un « point d'attache » bien défini dans le flux de traitement, auquel peuvent participer des modules internes (noyau) ou des modules supplémentaires développés par des tiers.

Requête-Cycle-de-vie-NGINX

Ce modèle permet une répartition claire des responsabilités et le maintien d’une architecture unifiée. extensible et flexibleExaminons quelques-unes des principales étapes :

  1. phase post-lecture
    Une fois la requête lue depuis le socket, NGINX effectue des vérifications préliminaires. C'est à ce moment que les validations initiales sont effectuées et que les données sont préparées pour l'analyse.

  2. phase de réécriture
    À ce stade, les règles de Réécriture d'URL, qui peut modifier le chemin de la requête, rediriger vers d'autres emplacements internes ou appliquer une logique de routage conditionnel. Il est souvent utilisé pour les redirections SEO, pour masquer les chemins internes ou pour acheminer le trafic vers différentes applications en fonction du chemin demandé.

  3. phase d'accès
    C'est ici que les commandes entrent en jeu. authentification et autorisationVous pouvez appliquer des listes de contrôle d'accès (ACL), limiter l'accès en fonction de l'adresse IP, des cookies, des jetons JWT ou intégrer des mécanismes d'authentification externes. Des modules tels que ngx_http_access_module o ngx_http_auth_basic_module ils opèrent précisément dans cette phase.

  4. try_files / phase de contenu
    Si la requête n'a pas encore été résolue, NGINX vérifie si des fichiers ou des répertoires correspondent au chemin demandé. S'il trouve une ressource statique (par exemple, HTML, images, CSS, JS), il la sert directement. Il peut également exécuter une logique de sélection de ressources personnalisée ou transmettre la requête à une autre étape.

  5. proxy / fastcgi / phase amont
    Si la ressource demandée n'est pas disponible localement, NGINX agit comme un Proxy inverse vers les serveurs en amont (par exemple, applications PHP via FastCGI, applications Python via uWSGI, backends Node.js ou autres services HTTP). C'est là que les modules entrent en jeu. proxy_pass, fastcgi_pass, uwsgi_pass et similaires.

  6. phase de filtre d'en-tête / filtre de corps
    Avant que la réponse ne soit envoyée au client, des transformations peuvent être appliquées aux données. modules de filtrage Par exemple, ils vous permettent de compresser la sortie avec gzip, de modifier les en-têtes HTTP, d'appliquer un codage fragmenté ou de manipuler dynamiquement le corps de la réponse.

  7. phase logarithmique
    Une fois la demande traitée et la réponse envoyée, NGINX exécute l' enregistrementLes données d'accès et de journal des erreurs sont écrites ici, et tous les modules personnalisés peuvent enrichir ou modifier les informations enregistrées.

Architecture interne et gestion de la mémoire

En plus du modèle par phases, NGINX se distingue également par son utilisation de structures de données optimisées qui réduisent les frais généraux et améliorent les performances :

  • Allocateur de dallesUn système d'allocation mémoire qui réduit la fragmentation et accélère les opérations d'allocation/désallocation. Il est particulièrement utile lorsque NGINX doit gérer des objets petits mais très volumineux (par exemple, des sessions, des clés de cache, des métadonnées).

  • Pools de mémoire: permettent aux modules d'allouer des blocs de mémoire temporaires qui sont ensuite libérés en une seule fois à la fin du cycle de vie de la requête, réduisant ainsi le nombre d'appels à malloc/free.

  • Zones de mémoire partagée: zones de mémoire partagées entre plusieurs processus de travail, utilisées pour :

    • partager les mesures et les statistiques du trafic ;

    • réaliser limitation de débit centralisé (limiter les connexions ou les requêtes par IP) ;

    • informations sur le magasin cachette pour les petites réponses ou métadonnées ;

    • mantenere persistance des sessions pour l'équilibrage de charge.

Cette approche permet à NGINX de gérer de gros volumes de trafic sans ralentir, garantissant efficacité constante même sous de fortes charges.

En termes simples, le modèle d'étape modulaire combiné à une gestion efficace de la mémoire permet à NGINX non seulement d'être très performant, mais aussi extrêmement extensibleTout développeur peut introduire une nouvelle logique en attachant des modules personnalisés aux étapes souhaitées, sans avoir à réécrire l’intégralité du pipeline de traitement des requêtes.

Mise en cache, gestion en amont et équilibrage de charge

L'un des cas d'utilisation les plus populaires de Nginx è quello di Proxy inverse devant un ou plusieurs serveurs backend, souvent combinés avec des mécanismes backend la mise en cache e l'équilibrage de chargeCette approche réduit la charge sur les applications, optimise les temps de réponse et garantit une haute disponibilité.

Cache disque et mémoire

NGINX, via des modules comme proxy_cache, fastcgi_cache e uwsgi_cache, peut mettre en œuvre un Couche de cache HTTP:

  • Cache disqueLes réponses sont enregistrées dans le système de fichiers, ce qui garantit leur persistance même après plusieurs redémarrages. Cette solution est idéale pour les contenus statiques ou semi-statiques, comme les pages HTML générées dynamiquement et non modifiables.

  • Mémoire cache (RAM)Plus rapide, mais capacité limitée. Souvent utilisé pour les petits contenus ou métadonnées (par exemple, en-têtes HTTP, statuts).

Grâce à ce cache, les requêtes répétées sont servies directement par NGINX, éviter les allers-retours vers le backend et réduire considérablement la latence.

Politiques d'expulsion (remplacement du cache)

Pour éviter que le cache ne grandisse indéfiniment, NGINX adopte des politiques de cache. expulsion pour supprimer le contenu le moins utile. La méthode la plus courante est LRU (moins récemment utilisé), qui supprime les entrées qui n'ont pas été utilisées depuis très longtemps.

Ces dernières années, la recherche universitaire a proposé des approches plus avancées, telles que l’utilisation de apprentissage par renforcement (RL)Une étude récente a présenté le modèle Froid-RL, qui intègre un agent RL dans NGINX pour optimiser les décisions d'expulsion. Résultat :

  • Majeur taux de réussite cache (plus de requêtes servies localement).

  • Réduction de la latence.

  • Meilleure adaptation aux charges de travail variables (par exemple, pics de trafic ou ensembles de données dynamiques).
    (réf. arXiv)

Contrôles en amont et de santé

NGINX peut agir comme un proxy pour plusieurs serveur en amont (par exemple, applications PHP, microservices, API). Dans ce scénario, le proxy inverse non seulement transmet les requêtes, mais surveiller l'état de santé des backends :

  • Si un serveur est inaccessible, il est exclu du pool.

  • Avec les versions avancées (NGINX Plus), vous pouvez configurer bilans de santé actifs, qui exécutent des requêtes de test réelles pour vérifier que le backend est non seulement réactif, mais également capable de diffuser un contenu valide.

Cela augmente la fiabilité globale de l'infrastructure, car NGINX peut s'adapter de manière dynamique à la dégradation possible de certains backends.

Algorithmes d'équilibrage de charge

Pour répartir le trafic entre les différents upstreams, NGINX propose plusieurs algorithmes d'équilibrage de charge :

  • Tournoi à la ronde: distribution uniforme en séquence.

  • Moins de connexions:le trafic va vers le serveur avec le moins de connexions actives.

  • Tournoi à la ronde pondéré: permet de donner plus de poids aux serveurs plus puissants.

  • Hachage IP:Le même client (basé sur l'IP) est toujours acheminé vers le même backend, utile pour les sessions qui ne peuvent pas être facilement répliquées.

Avec NGINXPlus, vous disposez de fonctionnalités supplémentaires :

  • Équilibrage dynamique basé sur des mesures d'exécution.

  • Bilans de santé adaptatifs: des contrôles de santé qui varient en fonction de l'état actuel du backend.

  • Basculement automatique plus avancé, avec réintégration transparente des serveurs restaurés.
    (réf. Medium)

Persistance/affinité de session

Dans certains scénarios (comme le commerce électronique ou les applications héritées), il est nécessaire de maintenir un utilisateur connecté au même backend pendant toute la durée de sa session. Ce mécanisme, également appelé sessions collantes, peut être obtenu de plusieurs manières :

  • Hachage IP:simple mais pas toujours fiable (par exemple les utilisateurs derrière des proxys partagés).

  • Affinité de session basée sur les cookies: NGINX attribue un cookie au client et l'utilise pour toujours le rediriger vers le même backend.

  • Modules commerciaux (NGINX Plus): prend en charge une logique plus sophistiquée, telle que l'affinité basée sur des jetons d'application ou des en-têtes personnalisés.

Cette fonctionnalité est essentielle pour les applications qui n'ont pas de sessions distribuées, évitant des problèmes tels que des déconnexions inattendues ou des paniers perdus dans le commerce électronique.

La combinaison de proxy inverse, mise en cache et équilibrage de charge fait de NGINX un contrôleur de livraison d'applications Puissant et extrêmement polyvalent : il accélère les réponses, soulage les backends, améliore la fiabilité et offre une flexibilité opérationnelle.

Mises à jour, rechargements et zéro temps d'arrêt

Dans un environnement de production moderne, où les services Web doivent rester toujours disponibles, l'un des aspects les plus critiques est la capacité à appliquer les modifications de configuration – ou même mettre à jour l’exécutable NGINX lui-même – sans interrompre le service et sans perdre les connexions actives.

Rechargement gracieux de la configuration

Lorsqu'un est lancé rechargement gracieux, le comportement est précisément orchestré :

  1. Il processus maître reçoit le signal (par exemple nginx -s reload).

  2. Charger et valider la nouvelle configuration (nginx.conf).

  3. Démarrer une nouvelle série de processus de travail avec les nouveaux paramètres.

  4. Envoyer un signal au vieux travailleurs leur demandant de ne pas accepter de nouvelles connexions, mais de compléter celles déjà en cours.

  5. Une fois les connexions actives terminées, les anciens travailleurs s'arrêtent et seuls les nouveaux restent actifs.

Cette approche garantit qu’il n’y a aucune interruption perceptible pour les utilisateurs finaux, évitant ainsi les erreurs 502/503 et les temps d’arrêt visibles.

Mises à niveau binaires sans interruption de service

En plus du simple rechargement de configuration, NGINX prend également en charge ce que l'on appelle mise à niveau binaireCe scénario est utile lorsque vous devez mettre à niveau NGINX vers une version plus récente, peut-être pour introduire de nouvelles fonctionnalités ou corriger des vulnérabilités de sécurité, mais sans interrompre le service.

Le flux typique est le suivant :

  1. Le nouveau binaire NGINX est installé à côté de celui existant.

  2. Le processus maître reçoit un signal (USR2) qui lui ordonne de démarrer une nouveau processus maître en utilisant la nouvelle piste, mais en gardant ouvrir les prises d'écoute déjà créé.

  3. Les anciens travailleurs continuent de gérer les connexions actives, tandis que les nouveaux travailleurs commencent à gérer les connexions entrantes.

  4. Une fois les anciens travailleurs terminés, ils sont fermés.

Diagramme NGINX

De cette façon, la transition d'une version à une autre se produit de manière transparent, sans fermer brusquement les connexions ni rejeter de nouvelles demandes.

Pourquoi NGINX offre un temps d'arrêt nul

La capacité de NGINX à effectuer des rechargements et des mises à niveau sans temps d'arrêt découle de quelques principes architecturaux fondamentaux :

  • Conception multi-processus:La séparation entre le maître et les travailleurs permet de remplacer les travailleurs sans toucher aux prises d'écoute ni interrompre les clients.

  • Partage de sockets: Les descripteurs de socket ouverts par le maître sont transmis aux travailleurs, permettant à de nouveaux processus de prendre le relais sans avoir à « recréer » la liaison.

  • Travailleur apatrideLes workers gèrent uniquement les connexions actives et ne maintiennent pas d'état complexe à long terme. Ils sont donc facilement remplaçables.

  • Architecture pilotée par événements:Réduit la quantité de travail persistant dans les travailleurs, facilitant ainsi la transition d'un groupe de processus à un autre.

Avantages opérationnels

Ces fonctionnalités vous permettent de :

  • Appliquer les modifications de configuration itérativement sans temps d'arrêt.

  • Effectuer les mises à jour de sécurité critique en temps réel.

  • Intégrer NGINX dans pipeline CI/CD, où les déploiements peuvent se produire plusieurs fois par jour sans interruption.

  • Réduisez les risques d'erreurs en production, car en cas de configuration invalide le maître refuse le rechargement et continue d'utiliser l'ancienne.

Limitations, extensions et cas d'utilisation avancés

limites

  • Logique dynamique complexeNGINX n'est pas conçu pour exécuter des scripts à chaque requête (comme une logique personnalisée lourde). Pour un comportement complexe, vous devez développer des modules en C ou utiliser des extensions comme OpenResty (Lua).

  • Modules statiques: de nombreuses fonctionnalités doivent être incluses au moment de la compilation ; la prise en charge des modules dynamiques est limitée par rapport à d'autres architectures plus « plug-in friendly ».

  • Fonctionnalités avancées (version entreprise requise):Certaines fonctionnalités telles que les métriques en temps réel, l'équilibrage avancé, les configurations dynamiques sans rechargement ne sont disponibles que dans NGINX Plus (version commerciale).

Extensions notables

  • OpenResty: est une distribution de NGINX intégrant LuaJIT, permettant d'insérer des scripts Lua dans le cycle de traitement des requêtes. Cela rend NGINX beaucoup plus flexible pour la logique par requête, le routage dynamique, la modification conditionnelle des en-têtes, la manipulation des données utiles, etc. Certaines entreprises l'utilisent comme passerelle API programmable.

  • Modules personnalisés:Si vous avez besoin de performances ou d'une logique très spécifique, vous pouvez écrire des modules C qui s'intègrent dans le cycle de requête.

Meilleures pratiques et considérations opérationnelles

Pour tirer le meilleur parti de l’architecture NGINX, voici quelques recommandations pratiques :

  • Configuration worker_processes basé sur des cœurs + hyperthreading, testant une charge réelle.

  • Utiliser worker_cpu_affinity (lorsque pris en charge) pour épingler les travailleurs aux cœurs, minimisant ainsi les migrations de processeur.

  • Gardez les opérations d’E/S (par exemple, l’écriture de journaux) hors du chemin critique, par exemple en utilisant des tampons ou des mécanismes asynchrones.

  • Minimisez la logique au sein des workers (évitez le travail intensif par requête). Pour les opérations complexes, externalisez vers des microservices ou utilisez des modules dédiés.

  • Surveillez et dimensionnez soigneusement votre cache (taille, politiques d'expulsion) en fonction des modèles de trafic.

  • Utilisez des contrôles de santé, une gestion des basculements et une surveillance pour éviter qu’un backend dégradé n’impacte l’ensemble de l’application.

  • Automatisation du rechargement et du déploiement : intégrez les rechargements NGINX dans les pipelines CI/CD, garantissant des restaurations rapides.

conclusion

L'architecture NGINX, avec son modèle piloté par événements, sa séparation maître/worker, son partage de sockets, son cycle de vie modulaire des requêtes et sa prise en charge native de la mise en cache et de l'équilibrage de charge, représente l'un des exemples les plus réussis de conception moderne axée sur la concurrence. Il ne s'agit pas seulement d'un serveur web rapide, mais d'une plateforme capable de servir de proxy inverse, de passerelle API, d'équilibrage de charge et d'accélérateur de performances, avec une conception qui préserve efficacité et stabilité même dans des scénarios extrêmement complexes.

Lorsqu'il est bien configuré et intégré dans une infrastructure, NGINX devient un véritable « front-end universel » capable d’absorber les pics de trafic, de réduire la latence perçue par les utilisateurs finaux et d’alléger considérablement la charge sur les serveurs d’applications. Sa capacité à gérer des dizaines de milliers de connexions simultanées avec une consommation de ressources minimale le rend particulièrement adapté aux plateformes à grande échelle telles que le commerce électronique, les systèmes de streaming, les portails d'actualités et les microservices dans les architectures cloud natives.

De plus, la possibilité d'effectuer des mises à jour de configuration et même des mises à niveau binaires sans interruption de service en fait un outil fiable, même pour les environnements critiques où la continuité de service est essentielle. Grâce à son modèle modulaire, les développeurs et les opérateurs peuvent étendre les fonctionnalités de manière ciblée, en sélectionnant uniquement les composants nécessaires et en optimisant l'empreinte opérationnelle.

En fin de compte, NGINX n’est pas simplement une alternative aux autres serveurs Web, mais un monument architectural:un logiciel qui allie performance, robustesse et flexibilité, offrant une base solide sur laquelle construire des applications modernes et résilientes prêtes à croître sans goulots d'étranglement.

Vous avez des doutes ? Vous ne savez pas par où commencer ? Contactez-nous !

Nous avons toutes les réponses à vos questions pour vous aider à faire le bon choix.

Discute avec nous

Discutez directement avec notre support avant-vente.

0256569681

Contactez-nous par téléphone pendant les heures de bureau 9h30 - 19h30

Contactez-nous en ligne

Ouvrez une demande directement dans l'espace contact.

AVIS DE NON-RESPONSABILITÉ, Mentions légales et droits d'auteur. Red Hat, Inc. détient les droits sur Red Hat®, RHEL®, RedHat Linux® et CentOS® ; AlmaLinux™ est une marque commerciale de la AlmaLinux OS Foundation ; Rocky Linux® est une marque déposée de la Rocky Linux Foundation ; SUSE® est une marque déposée de SUSE LLC ; Canonical Ltd. détient les droits sur Ubuntu® ; Software in the Public Interest, Inc. détient les droits sur Debian® ; Linus Torvalds détient les droits sur Linux® ; FreeBSD® est une marque déposée de la Fondation FreeBSD ; NetBSD® est une marque déposée de la Fondation NetBSD ; OpenBSD® est une marque déposée de Theo de Raadt ; Oracle Corporation détient les droits sur Oracle®, MySQL®, MyRocks®, VirtualBox® et ZFS® ; Percona® est une marque déposée de Percona LLC ; MariaDB® est une marque déposée de MariaDB Corporation Ab ; PostgreSQL® est une marque déposée de PostgreSQL Global Development Group ; SQLite® est une marque déposée de Hipp, Wyrick & Company, Inc. ; KeyDB® est une marque déposée d'EQ Alpha Technology Ltd. ; Typesense® est une marque déposée de Typesense Inc. ; REDIS® est une marque déposée de Redis Labs Ltd ; F5 Networks, Inc. détient les droits sur NGINX® et NGINX Plus® ; Varnish® est une marque déposée de Varnish Software AB ; HAProxy® est une marque déposée de HAProxy Technologies LLC ; Traefik® est une marque déposée de Traefik Labs ; Envoy® est une marque déposée de CNCF ; Adobe Inc. détient les droits sur Magento® ; PrestaShop® est une marque déposée de PrestaShop SA ; OpenCart® est une marque déposée d'OpenCart Limited ; Automattic Inc. détient les droits sur WordPress®, WooCommerce® et JetPack® ; Open Source Matters, Inc. détient les droits sur Joomla® ; Dries Buytaert détient les droits sur Drupal® ; Shopify® est une marque déposée de Shopify Inc. ; BigCommerce® est une marque déposée de BigCommerce Pty. Ltd.; TYPO3® est une marque déposée de la TYPO3 Association; Ghost® est une marque déposée de la Ghost Foundation; Amazon Web Services, Inc. détient les droits sur AWS® et Amazon SES® ; Google LLC détient les droits sur Google Cloud™, Chrome™ et Google Kubernetes Engine™ ; Alibaba Cloud® est une marque déposée d'Alibaba Group Holding Limited ; DigitalOcean® est une marque déposée de DigitalOcean, LLC ; Linode® est une marque déposée de Linode, LLC ; Vultr® est une marque déposée de The Constant Company, LLC ; Akamai® est une marque déposée d'Akamai Technologies, Inc. ; Fastly® est une marque déposée de Fastly, Inc. ; Let's Encrypt® est une marque déposée d'Internet Security Research Group ; Microsoft Corporation détient les droits sur Microsoft®, Azure®, Windows®, Office® et Internet Explorer® ; Mozilla Foundation détient les droits sur Firefox® ; Apache® est une marque déposée de The Apache Software Foundation ; Apache Tomcat® est une marque déposée de The Apache Software Foundation ; PHP® est une marque déposée de PHP Group ; Docker® est une marque déposée de Docker, Inc. Kubernetes® est une marque déposée de The Linux Foundation ; OpenShift® est une marque déposée de Red Hat, Inc. ; Podman® est une marque déposée de Red Hat, Inc. ; Proxmox® est une marque déposée de Proxmox Server Solutions GmbH ; VMware® est une marque déposée de Broadcom Inc. ; CloudFlare® est une marque déposée de Cloudflare, Inc. ; NETSCOUT® est une marque déposée de NETSCOUT Systems Inc. ; ElasticSearch®, LogStash® et Kibana® sont des marques déposées d'Elastic NV ; Grafana® est une marque déposée de Grafana Labs ; Prometheus® est une marque déposée de The Linux Foundation ; Zabbix® est une marque déposée de Zabbix LLC ; Datadog® est une marque déposée de Datadog, Inc. ; Ceph® est une marque déposée de Red Hat, Inc. ; MinIO® est une marque déposée de MinIO, Inc. ; Mailgun® est une marque déposée de Mailgun Technologies, Inc. ; SendGrid® est une marque déposée de Twilio Inc. Postmark® est une marque déposée d'ActiveCampaign, LLC ; cPanel®, LLC détient les droits sur cPanel® ; Plesk® est une marque déposée de Plesk International GmbH ; Hetzner® est une marque déposée de Hetzner Online GmbH ; OVHcloud® est une marque déposée d'OVH Groupe SAS ; Terraform® est une marque déposée de HashiCorp, Inc. ; Ansible® est une marque déposée de Red Hat, Inc. ; cURL® est une marque déposée de Daniel Stenberg ; Facebook®, Inc. détient les droits sur Facebook®, Messenger® et Instagram®. Ce site n'est pas affilié, sponsorisé ou autrement associé à l'une des entités mentionnées ci-dessus et ne représente aucune de ces entités de quelque manière que ce soit. Tous les droits sur les marques et noms de produits mentionnés sont la propriété de leurs titulaires respectifs des droits d'auteur. Toutes les autres marques mentionnées sont la propriété de leurs titulaires respectifs.

JUSTE UN MOMENT !

Vous êtes-vous déjà demandé si votre hébergement était nul ?

Découvrez dès maintenant si votre hébergeur vous pénalise avec un site web lent digne des années 1990 ! Résultats immédiats.

Fermer le CTA
Retour en haut de page