Apache et Nginx. Relié par une seule chaîne

Comment la combinaison Apache & Nginx est implémentée dans Timeweb

Pour de nombreuses entreprises, Nginx + Apache + PHP est une combinaison très typique et courante, et Timeweb ne fait pas exception. Cependant, comprendre exactement comment il est mis en œuvre peut être intéressant et utile.

Apache et Nginx. Relié par une seule chaîne

Le recours à une telle combinaison est bien entendu dicté par les besoins de nos clients. Nginx et Apache jouent un rôle particulier, chacun résolvant un problème spécifique.

réglages de base Apache sont effectués dans les fichiers de configuration d'Apache lui-même, et les paramètres des sites clients s'effectuent via 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étrage s'appliquera spécifiquement à son site. Par exemple, grâce à la fonctionnalité Apache, les utilisateurs peuvent changer le mode de fonctionnement au sein d'une même version PHP de mod_php à mod_cgi ; vous pouvez configurer des redirections, une optimisation pour le référencement, une URL pratique, quelques limites pour PHP.

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

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

Fonctionnalités du bundle Apache & Nginx dans Timeweb

Notre hébergement virtuel implémente 2 schémas d'exploitation principaux pour Apache & Nginx : Partagé et dédié.

Régime partagé

Ce schéma est utilisé pour la plupart des utilisateurs. Il se distingue par sa simplicité et son intensité en ressources : le schéma Partagé consomme moins de ressources, c'est pourquoi son tarif est moins cher. Selon ce schéma, le serveur exécute un Nginx, ce qui lui permet de répondre à toutes les demandes des utilisateurs, et plusieurs instances d'Apache.

Le dispositif Partagé s'améliore depuis longtemps : progressivement nous avons corrigé les défauts. Idéalement, cela peut être fait sans qu’il soit nécessaire de modifier le code source.

Apache et Nginx. Relié par une seule chaîne
Régime partagé

Schéma dédié

Le dédié nécessite plus de ressources, son tarif est donc plus cher pour les clients. Dans le schéma dédié, chaque client obtient son propre Apache distinct. 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é.

Apache et Nginx. Relié par une seule chaîne
Schéma dédié

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

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

Cette configuration a considérablement économisé les ressources RAM et accéléré Nginx.

Le rechargement ne fonctionnera pas !

Dans le schéma partagé, nous avons supprimé la nécessité de recharger Apache lors de la modification des paramètres du site Web. Auparavant, lorsqu'un client souhaitait ajouter un domaine ou modifier la version de PHP, un rechargement obligatoire d'Apache était requis, 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 rechargements en créant des configurations dynamiques. Grâce à mpm-itk (module Apache), chaque processus s'exécute en tant qu'utilisateur distinct, ce qui augmente le niveau de sécurité. Cette méthode vous permet de transférer des données sur l'utilisateur et son document_root de Nginx vers Apache2. Ainsi, Apache ne contient pas de configurations de site, il les reçoit dynamiquement et les rechargements ne sont plus nécessaires.

Apache et Nginx. Relié par une seule chaîne
Configuration du schéma partagé

Et Docker ?

De nombreuses entreprises ont opté pour un système basé sur des conteneurs. Timeweb étudie actuellement la possibilité d'une telle transition. Bien entendu, chaque décision comporte des avantages et des inconvénients.

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

Timeweb alimente environ 500 000 sites Web. Nous assumons une grande responsabilité et n’apportons pas de modifications instantanées et injustifiées à une architecture complexe. La combinaison Apache et Nginx est fiable et éprouvée. Nous essayons à notre tour d’atteindre des performances maximales grâce à des configurations uniques.

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

Source: habr.com

Ajouter un commentaire