Para muitas empresas, Nginx + Apache + PHP é um pacote bastante comum e comum, e o Timeweb não é exceção aqui. No entanto, descobrir exatamente como ele é implementado pode ser interessante e recompensador.
O uso de tal pacote é, obviamente, ditado pelas necessidades de nossos clientes. Tanto o Nginx quanto o Apache desempenham um papel especial, cada um resolvendo um problema específico.
As principais configurações do Apache são feitas nos arquivos de configuração do próprio Apache, e as configurações dos sites clientes são feitas através do arquivo .htaccess... .htaccess é um arquivo de configuração no qual o cliente pode configurar independentemente as regras e o comportamento do servidor web. Essa configuração será específica para seu site. Por exemplo, graças à funcionalidade do Apache, os usuários podem alterar o modo de operação na mesma versão do PHP de mod_php para mod_cgi; você pode personalizar redirecionamentos, otimização de SEO, URL conveniente, alguns limites para PHP.
Nginx é usado como um servidor proxy para redirecionar o tráfego para o Apache e como um servidor web para servir conteúdo estático. Também para Nginx, desenvolvemos módulos de segurança que nos permitem proteger os dados de nossos usuários, por exemplo, para separar direitos de acesso.
Vamos imaginar que algum usuário visite o site do nosso cliente. Primeiro, o usuário vai para o Nginx, que fornece conteúdo estático. Acontece instantaneamente. Então, quando se trata de carregar o PHP, o Nginx redireciona a solicitação para o Apache. E o Apache, junto com o PHP, já gera conteúdo dinâmico.
Recursos do pacote Apache e Nginx no Timeweb
Nossa hospedagem virtual implementa 2 esquemas principais para Apache & Nginx: Compartilhado e Dedicado .
Esquema compartilhado Este esquema é usado para a maioria dos usuários. Distingue-se pela simplicidade e intensidade de recursos: o esquema Compartilhado usa menos recursos, portanto sua tarifa também é mais barata. De acordo com este esquema, um Nginx está rodando no servidor, o que permite atender a todas as solicitações do usuário e várias instâncias do Apache.
O esquema Compartilhado vem se aprimorando há muito tempo: gradativamente corrigimos as deficiências. Convenientemente, isso pode ser feito sem a necessidade de modificar o código-fonte. Esquema
compartilhado
Esquema dedicado
Dedicado requer mais recursos, então sua tarifa é mais cara para os clientes. No esquema dedicado, um Apache separado é criado para cada cliente. Os recursos aqui são reservados para o cliente, eles são alocados exclusivamente. Como funciona: Existem várias versões de PHP no servidor. Oferecemos suporte às versões 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Portanto, para cada versão do PHP, seu próprio Apache é iniciado.
Esquema dedicado
Zona segura. Configurando zonas no Nginx
Anteriormente, usávamos muitas zonas de memória compartilhada (zonas) para Nginx - um bloco de servidor por domínio. Essa configuração requer muitos recursos, pois uma zona separada é criada para cada site. No entanto, nas configurações do Nginx, a maioria dos sites são do mesmo tipo, então eles podem ser colocados em uma zona graças ao uso de diretivas de mapa no ngx_http_map_module , que permitem definir mapeamentos. Por exemplo, temos um template de zona para o qual devemos fornecer variáveis: caminho para o site, versão do PHP, usuário. Assim, a releitura da configuração do Nginx, ou seja, recarregar, foi acelerada.
Essa configuração economizou muito recursos de RAM e fez o Nginx funcionar mais rápido.
Recarregar não funcionará!
No esquema Compartilhado, nos livramos da necessidade de reiniciar (recarregar) o Apache ao alterar as configurações do site. Anteriormente, quando um cliente queria adicionar um domínio ou alterar a versão do PHP, uma recarga obrigatória do Apache era necessária, o que levava a atrasos nas respostas e afetava negativamente o desempenho do site.
Nós nos livramos dos recarregamentos criando configurações dinâmicas. Graças ao mpm-itk (módulo Apache), cada processo é executado a partir de um usuário separado, o que aumenta o nível de segurança. Este método permite a você transferir dados sobre o usuário e seu document_root do Nginx para o Apache2. Assim, o Apache não contém configurações de site, ele as recebe dinamicamente e não é mais necessário recarregar.
Configuração de esquema compartilhado
E quanto ao Docker?
Muitas empresas mudaram para um sistema baseado em contêiner. A Timeweb está atualmente considerando a possibilidade de tal transição. Claro, existem prós e contras em cada solução.
Junto com as vantagens inegáveis, o sistema de contêineres fornece ao usuário menos recursos. No Timeweb, graças ao esquema de operação de hospedagem descrito, o usuário não tem limitação de RAM. Ele recebe mais recursos do que o contêiner. Além disso, o usuário pode ter mais módulos Apache carregados.
O Timeweb capacita cerca de 500.000 sites. Assumimos grande responsabilidade e não fazemos alterações instantâneas e desnecessárias em uma arquitetura complexa. O pacote Apache e Nginx é confiável e testado pelo tempo. Nós, por sua vez, tentamos alcançar o máximo desempenho por meio de configurações exclusivas.
Para um trabalho rápido e de alta qualidade de um grande número de sites, você precisa usar o modelo e a configuração dinâmica do Apache e do Nginx. Ele permite que você administre de forma fácil e rápida um grande número de servidores semelhantes.