Apache et Nginx. Lié par la même chaîne

Comment le bundle Apache & Nginx est implémenté dans Timeweb



Pour de nombreuses entreprises, Nginx + Apache + PHP est un bundle très typique et répandu, et Timeweb ne fait pas exception ici. Cependant, comprendre exactement comment il est mis en œuvre peut être intéressant et enrichissant.



image



L'utilisation d'un tel bundle est bien entendu dictée par les besoins de nos clients. Nginx et Apache jouent tous deux un rôle spécial, chacun résolvant un problème spécifique.



Les principaux paramètres Apache sont définis dans les fichiers de configuration d'Apache lui-même, et les paramètres des sites clients sont définis via le fichier .htaccess... .htaccess est un fichier de configuration dans lequel le client peut configurer indépendamment les règles et le comportement du serveur Web. Ce paramètre sera spécifique à son site. Par exemple, grâce à la fonctionnalité Apache, les utilisateurs peuvent changer le mode de fonctionnement dans la même version PHP de mod_php à mod_cgi; vous pouvez personnaliser les redirections, l'optimisation du référencement, l'URL pratique, certaines limites PHP.



Nginx est utilisé comme serveur proxy pour rediriger le trafic vers Apache et comme serveur Web pour diffuser du contenu statique. Aussi pour Nginx, nous avons développé des modules de sécurité qui nous permettent de protéger les données de nos utilisateurs, par exemple, pour séparer les droits d'accès.



Imaginons qu'un utilisateur visite le site de notre client. Tout d'abord, l'utilisateur accède à Nginx, qui propose du contenu statique. Cela arrive instantanément. Ensuite, lorsqu'il s'agit de charger PHP, Nginx redirige la requête vers Apache. Et Apache, avec PHP, génère déjà du contenu dynamique.



Fonctionnalités du bundle Apache et Nginx dans Timeweb



Notre hébergement virtuel implémente 2 schémas principaux pour Apache et Nginx: partagé et dédié .







Schéma partagé Ce schéma est utilisé pour la plupart des utilisateurs. Il se distingue par sa simplicité et son intensité en ressources: le système partagé utilise moins de ressources, donc son tarif est également moins cher. Selon ce schéma, un Nginx est en cours d'exécution sur le serveur, ce qui permet de traiter toutes les demandes des utilisateurs, et plusieurs instances Apache.



Le schéma partagé s'améliore depuis longtemps: nous avons progressivement corrigé les lacunes. De manière pratique, cela peut être fait sans avoir à modifier le code source. Schéma





partagé



Schéma dédié



Dédié nécessite plus de ressources, son tarif est donc plus cher pour les clients. Dans le schéma dédié, un Apache distinct est généré pour chaque client. Les ressources ici sont réservées au client, elles sont allouées exclusivement. Comment ça marche: Il existe plusieurs versions de PHP sur le serveur. Nous prenons en charge les versions 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Ainsi, pour chaque version de PHP, son propre Apache est lancé.





Schéma dédié



Zone de sécurité. Configuration des zones dans Nginx



Auparavant, nous utilisions de nombreuses zones de mémoire partagée (zones) pour Nginx - un bloc de serveur par domaine. Cette configuration nécessite beaucoup de ressources, car une zone distincte est créée pour chaque site. Cependant, dans les paramètres Nginx, la plupart des sites sont du même type, ils peuvent donc être placés dans une zone grâce à l'utilisation de directives de carte dans le ngx_http_map_module , qui vous permettent de définir des mappages. Par exemple, nous avons un modèle de zone auquel nous devons fournir des variables: chemin d'accès au site, version PHP, utilisateur. Ainsi, la relecture de la configuration Nginx, c'est-à-dire le rechargement, a été accélérée.



Cette configuration économisait considérablement les ressources de RAM et permettait à Nginx de fonctionner plus rapidement.



Le rechargement ne fonctionnera pas!



Dans le schéma partagé, nous avons éliminé le besoin de recharger (recharger) Apache lors de la modification des paramètres du site. Auparavant, lorsqu'un client souhaitait ajouter un domaine ou modifier la version PHP, un rechargement obligatoire d'Apache était nécessaire, ce qui entraînait des retards dans les réponses et affectait négativement les performances du site.



Nous nous sommes débarrassés des recharges en créant des configurations dynamiques. Grâce à mpm-itk (un module Apache), chaque processus s'exécute à partir d'un utilisateur distinct, ce qui augmente la sécurité. Cette méthode vous permet de transférer des données sur l'utilisateur et sa racine_document de Nginx vers Apache2. Ainsi, Apache ne contient pas de configurations de site, il les reçoit de manière dynamique et les rechargements ne sont plus nécessaires.





Configuration du schéma partagé



Et Docker?



De nombreuses entreprises sont passées à un système basé sur des conteneurs. Timeweb envisage actuellement une telle transition. Bien sûr, chaque solution présente des avantages et des inconvénients.



Outre les avantages indéniables, le système de conteneurs offre à l'utilisateur moins de ressources. Dans Timeweb, grâce au schéma d'opération d'hébergement décrit, l'utilisateur n'a aucune limitation en RAM. Il reçoit plus de ressources que le conteneur. De plus, l'utilisateur peut charger plus de modules Apache.



Timeweb alimente environ 500 000 sites Web. Nous assumons une grande responsabilité et n'apportons pas de modifications instantanées et inutiles à une architecture complexe. Le bundle Apache & Nginx est fiable et éprouvé. Nous nous efforçons à notre tour d'atteindre des performances maximales grâce à des configurations uniques.



Pour un travail rapide et de haute qualité sur un grand nombre de sites, vous devez utiliser le modèle et la configuration dynamique d'Apache et de Nginx. Il vous permet d'administrer facilement et rapidement un grand nombre de serveurs similaires.



All Articles