Avec Apache et NGINX, les utilisateurs disposent de deux projets open source stables et sécurisés. Cependant, ni l’un ni l’autre des deux serveurs Web ne sort vainqueur de cette comparaison. Les deux projets sont basés sur des décisions de conception fondamentalement différentes, qui apportent des avantages ou des inconvénients en fonction de l'utilisation du logiciel.
Le serveur HTTP Apache offre un immense répertoire de modules qui, avec les options de configuration flexibles, ouvre de nombreux champs d’application pour le logiciel. Le serveur Web est considéré comme un logiciel standard pour les scénarii d’hébergement mutualisé et continuera à se défendre contre les serveurs Web légers tels que NGINX dans ce segment d'activité. La possibilité d'intégrer des interprètes pour des langages de programmation tels que PHP, Perl, Python ou Ruby directement dans le serveur Web via des modules permet de livrer du contenu web dynamique sans serveur d’application séparé. Cela fait du serveur HTTP Apache une solution pratique pour les sites Web de petite et moyenne taille où le contenu est généré dynamiquement pendant la récupération.
NGINX, en revanche, n’offre aucune possibilité de traiter du contenu Web dynamique en natif ou d'intégrer les interprètes correspondants par modules. Un serveur d'application séparé est donc toujours nécessaire. Ceci peut sembler être un effort supplémentaire inutile pour les sites Web de petite à moyenne taille. Cependant, une telle structure montre ses forces dans les grands projets Web et l'augmentation des volumes de trafic.
NGINX est généralement utilisé en tant qu'équilibreur de charge face à un groupe de serveurs d'applications. L’équilibreur de charge reçoit les demandes entrantes et, selon le type de demande, décide si elle doit être transmise à un serveur spécialisé en arrière-plan. Le contenu Web statique est livré directement par NGINX. Cependant, si un client demande du contenu dynamique, l’équilibreur de charge transmet la demande à un serveur d’application dédié. Celui-ci interprète le langage de programmation, assemble le contenu demandé dans une page Web et le renvoie à l’équilibreur de charge qui, à son tour, le livre au client. De cette façon, les volumes de trafic élevés peuvent être gérés efficacement.
De plus, NGINX met en cache le contenu déjà livré pendant une certaine période de temps, de sorte que le contenu dynamique demandé à nouveau peut être livré directement à partir de l'équilibreur de charge sans que NGINX ait à accéder à nouveau à un serveur d'application.
L’avantage de l’externalisation de l’interpréteur à un ou plusieurs serveurs backend séparés est que le réseau de serveurs peut facilement être mis à l'échelle en ajoutant des serveurs backend supplémentaires ou en désactivant des systèmes qui ne sont pas nécessaires. Dans la pratique, de nombreux utilisateurs s'appuient sur la combinaison de NGINX et d'Apache pour une telle configuration et utilisent donc les points forts des deux serveurs Web.