Apache & Nginx. Conectados por uma cadeia

Como a combinação Apache & Nginx é implementada na Timeweb

Para muitas empresas, Nginx + Apache + PHP é uma combinação muito típica e amplamente utilizada, e a Timeweb não é exceção. No entanto, entender como exatamente isso é implementado pode ser interessante e útil.

Apache & Nginx. Conectados por uma corrente

O uso dessa combinação, é claro, é ditado pelas necessidades de nossos clientes. Tanto Nginx quanto Apache desempenham papéis especiais, cada um resolvendo uma tarefa específica.

Configurações principais Apache são realizadas nos arquivos de configuração do próprio Apache, enquanto as configurações para os sites dos clientes ocorrem através do arquivo .htaccess. .htaccess é um arquivo de configuração, onde o cliente pode configurar as regras e o comportamento do servidor web. Essa configuração será específica para o seu site. Por exemplo, graças à funcionalidade do Apache, os usuários podem mudar o modo de operação dentro de uma versão PHP de mod_php para mod_cgi; podem configurar redirecionamentos, otimização para SEO, URLs amigáveis e alguns limites para o PHP.

Nginx é utilizado como um servidor proxy para redirecionar o tráfego para o Apache e como servidor web para servir conteúdo estático. Além disso, desenvolvemos módulos de segurança para o Nginx, que permitem proteger os dados de nossos usuários, como, por exemplo, dividir as permissões de acesso.

Vamos imaginar que algum usuário entra no site de nosso cliente. Primeiro, o usuário chega ao Nginx, que entrega conteúdo estático. Isso ocorre instantaneamente. Em seguida, quando se trata de carregar o PHP, o Nginx redireciona a solicitação para o Apache. E o Apache, juntamente com o PHP, gera o conteúdo dinâmico.

Características da combinação Apache & Nginx na Timeweb

No nosso serviço de hospedagem virtual, foram implementados 2 esquemas principais de operação do Apache & Nginx: Shared e Dedicated.

Esquema Shared

Esse esquema é usado pela maioria dos usuários. Ele se caracteriza por sua simplicidade e baixo consumo de recursos: o esquema Shared utiliza menos recursos, por isso sua tarifa é mais barata. Segundo esse esquema, um único Nginx está rodando no servidor, o que permite atender todas as solicitações dos usuários, além de várias instâncias do Apache.

O esquema Shared foi aprimorado ao longo do tempo: gradualmente corrigimos suas falhas. É conveniente que ele possa ser ajustado sem a necessidade de modificar o código-fonte.

Apache & Nginx. Conectados por uma corrente
esquema Shared

Esquema Dedicated

O Dedicated requer mais recursos, por isso sua tarifa é mais cara para os clientes. No esquema Dedicated, um Apache separado é configurado para cada cliente. Os recursos aqui são reservados para o cliente, sendo alocados de forma exclusiva. Como funciona: no servidor, existem várias versões do PHP. Nós suportamos as versões 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Assim, para cada versão do PHP, um Apache diferente é iniciado.

Apache & Nginx. Conectados por uma corrente
esquema Dedicated

Zona segura. Configuração de zonas no Nginx

Anteriormente, utilizávamos muitas zonas de memória compartilhada (zone) para o Nginx — um bloco server para cada domínio. Essa configuração exige muitos recursos, pois uma zona separada é criada para cada site. No entanto, nas configurações do Nginx, a maioria dos sites é similar, portanto, é possível agrupá-los em uma única zona utilizando a diretiva map no módulo ngx_http_map_module, que permite estabelecer correspondências. Por exemplo, temos um modelo de zona no qual devemos fornecer variáveis: caminho do site, versão do PHP, usuário. Assim, a leitura da configuração do Nginx foi acelerada, ou seja, o reload.

Essa configuração economizou significativamente os recursos de memória RAM e acelerou o funcionamento do Nginx.

O reload não será realizado!

No esquema Shared, eliminamos a necessidade de reiniciar (reload) o Apache ao fazer alterações nas configurações dos sites. Anteriormente, quando um cliente desejava adicionar um domínio ou mudar a versão do PHP, um reload do Apache era obrigatório, causando atrasos nas respostas e impactando negativamente o desempenho dos sites.

Eliminamos os reloads criando configurações dinâmicas. Graças ao mpm-itk (módulo Apache), cada processo é executado por um usuário separado, o que aumenta o nível de segurança. Esse método permite transmitir dados do usuário e seu document_root do Nginx para o Apache2. Assim, o Apache não contém a configuração dos sites; ele a obtém dinamicamente, e os reloads não são mais necessários.

Apache & Nginx. Conectados por uma corrente
Configuração do esquema Shared

E quanto ao Docker?

Muitas empresas migraram para um sistema baseado em contêineres. A Timeweb está atualmente considerando essa possibilidade. Certamente, cada solução tem seus prós e contras.

Embora a systema de contêineres tenha vantagens inegáveis, os usuários possuem menos recursos. Na Timeweb, graças ao modelo de hospedagem descrito, não há limitação de memória RAM. O usuário recebe mais recursos do que em um contêiner. Além disso, o usuário pode carregar mais módulos do Apache.

A Timeweb opera cerca de 500.000 sites. Temos uma grande responsabilidade e não fazemos mudanças instantâneas e injustificadas na arquitetura complexa. A combinação Apache & Nginx é confiável e testada ao longo do tempo. Nós, por nossa parte, nos esforçamos para alcançar o máximo desempenho por meio de configurações exclusivas.

Para um desempenho de qualidade e rápido de um grande número de sites, é necessário utilizar uma configuração padrão e dinâmica do Apache e Nginx. Isso permite administrar de forma simples e rápida um grande número de servidores semelhantes.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster