
Configure NGINX e PHP e alcance o máximo de performance e disponibilidade!
Hoje vamos falar sobre a configuração de NGINX e PHP para alcançar máxima performance e disponibilidade, com foco na transição de uma arquitetura monolítica para microservices. Acompanhe!
Monolithic X Microservices
Uma aplicação monolithic é construída em uma única base de código com um número variável de módulos. O número de módulos depende da complexidade do negócio e de suas características técnicas, já a arquitetura de microservices foi projetada para acomodar a necessidade de grande desenvolvimento de aplicativos, fornecendo um conjunto de componentes e serviços modulares.
Recomendamos o uso de microservices, independente das linguagens utilizadas para aplicações de alta disponibilidade e escalabilidade.

Esse diagrama foi criado pensando em um modelo de aplicação que utiliza microservices e abaixo será apresentado.
- O usuário vai fazer uma requisição de um domínio no seu navegador, o servidor DNS vai fazer uma ligação entre um domínio e um número de IP e com isso o usuário chega a nossa infraestrutura;
- O usuário vai fazer uma requisição de um domínio no seu navegador, o servidor DNS vai fazer uma ligação entre um domínio e um número de IP e com isso o usuário chega aos containers de nossa infraestrutura;
- Os nossos containers estão separados em load balancer, aplicação e banco de dados.
Início Cloudflare

Após fazer esse passo a passo, será necessário realizar os apontamentos, abaixo vamos apresentar um exemplo de apontamentos:

Abaixo será apresentado algumas funcionalidades que sugerimos que sejam ativadas:
- SSL / TLS / Visão geral -> Manter o SSL do tipo completo.
- SSL / TLS / Certificados de Borda -> Marcar sempre usar HTTPS.
- Speed / Otimização -> Minificação automática, manter ativado JavaScript, CSS e HTML. Ativar Brotli. Não ativar o Rocket Loader.
- Rede -> Ativar HTTP/3 (com QUIC), Ativar 0-RTT, WebSockets e Onion Routing.
Balancer Aplicação

- Distribuir as requisições - O nginx verifica quais servidores de aplicações estão disponíveis e direciona as requisições somente para esses.
- Camada de SSL - Pode ser utilizado para instalar o certificado SSL.
- Atctive Fall Over - Este recurso permite desativar um ou outro servidor de aplicação quando é feita a implementação.
- Stick Sessions - O nginx faz a replicação da sessão entre os servidores de aplicação.
Criar ambiente
Clicando na opção “Novo Ambiente” na parte superior do painel será apresentando uma janela para a configuração do ambiente, o primeiro ícone do painel seria o servidor de balancer, logo abaixo dele o servidor de aplicação. Escalando o servidor de aplicação horizontalmente, o painel irá acrescentar uma instância do balancer automaticamente, como na imagem abaixo:

Também é possível fazer a escala horizontal no balancer. Caso algum servidor de balancer cair, o outro processaria as requisições automaticamente.

Os IPs públicos devem ser adicionados aos servidores de balancer, pois é o mesmo que vai receber as requisições. O apontamento deve ser feito para ambos os IPs.

Instalar SSL
Clicando sobre a opção “Add-ons” no balancer, será apresentado uma janela para a instalação do certificado, como na imagem abaixo.

Para realizar a instalação siga os passos a baixo:
- Coloque todos os domínios e subdomínios que farão parte do projeto, separados por virgula;
- Clique no botão “Instalar”.
Arquivos Balancer
O balancer já vem configurado e otimizado sem necessidade de alterações, não recomendamos alterar nenhuma configuração se caso não possuir conhecimentos avançados, abaixo será apresentando os principais arquivos de configurações
- /etc/nginx/nginx.conf – Algumas opções globais como números de processos
- /etc/nginx/nginx-jelastic.conf – Regras de apontamentos para a porta 80
- /etc/nginx/conf.d/ssl.conf – Regras de apontamento para a porta 443
É possível acessar o diretório de arquivos clicando na opção “Configurações” conforme a imagem abaixo:

Performance Web
Abaixo será apresentado os principais arquivos de configuração para o servidor web nginx:
- /etc/nginx/nginx.conf – Revisarconfigurações globais do NGINX WEB
- /etc/nginx/conf.d/seudominio.com.br.conf – Revisar configurações especificas do Domínio
- /etc/php.ini e /etc/php-fpm.conf – revisar configurações especificas do PHP
Abaixo será apresentado as principais variáveis do arquivo /etc/nginx/nginx.conf e as configurações que recomendamos
- work_connections 5000 – Essa variável é responsável para atribuir o numero de requisições para o servidor web
- work_rlimit_nofile 12000 – Essa variável é responsável pelo numero de arquivos que podem estar abertos no sistema operacional
- gzip_static on – GZIP é um recurso que já vem habilitado nos nossos ambientes, ele é responsável por compactar os arquivos da aplicação
- sendfile on
- multi_accept on
- ese epoli
- keepalive – Já vem habilitado habilitado nos nossos ambientes
- Desabilitar os logs se caso desejar, comentando as linhas acess_log e error_log
Abaixo será apresentado as configurações do virtual host do dominio seudominio.com.br
- Caso a aplicação for wordpress será necessário adicionar essa linha para funcionar o sistema de rotas: try_files $uri $uri/ /index.php?$args
- Cache de domínio (usar com cuidado), se desejar ter cache(no exemplo abaixo, de 30 dias, nessas extensões de arquivo), adicionar a linha): location~*\.(?:ico|css|js|json|gif|jpe?g|png|woff2)$ {espires 7d;}
- Para wordpress, por segurança, adicionar essas linhas baixo da linha server_name:
location = /xmlrpc.php{
deny all;
acess_log off;
log_not_found off;
return 444; }
No arquivo /etc/php.ini recomendamos manter as configurações que já estão otimizadas, se desejar apenas ajudar o uso de memoria na variável memory_limit.
No arquivo /etc/php-fpm.conf que é responsável por executar as requisições do php, recomendamos as configurações abaixo:
- Conceitos do pm = static, dynamic e ondemand (Essa variável e responsável por definir a forma que será executado o php, para a nossa plataforma recomendamos a dynamic)
- pm.max_children = 2 (Essa variável é responsável pela quantidade de processos php serão executados simultaneamente, sugerimos utilizar 1 por core, no comando ssh /proc/cpuinfo é apresentado quantos cores o servidor possui)
- pm.process_idle_timeout = 10s (Essa variável é definida como padrão, recomendamos não alterar ela)
- om.max_requests = 5000 (Essa variável é definida como padrão, recomendamos não alterar ela).
Restart e deploy sem downtime
Após a alteração de alguma variável de configuração do serviço, normalmente é necessário reiniciar o container, com o restart sequencial, é possível realizar esse procedimento com um intervalo de tempo, garantindo assim a disponibilidade do serviço, basta definir o tempo de atraso entre as reinicializações e clicar em “reinício sequencial(um por um) com atraso”.

Na nossa plataforma tambem é possível fazer o deploy da aplicação com zero downtime, desta forma os arquivos de projeto atualizados podem ser implantados perfeitamente, enquanto a versão de código inicial continua trabalhando e gerenciando as sessões dos usuários, basta clicar em “Habilitar Implantação de tempo de inatividade zero”.

Confira abaixo o Talk SaveinCloud e descubra como é possível garantir estabilidade por meio do nosso sistema em PHP.
Soluções robustas para PHP e Nginx
Se você está buscando escalabilidade e alta disponibilidade para suas aplicações PHP com Nginx, a SaveinCloud oferece a infraestrutura ideal. Nossos datacenters com certificação Tier III garantem que seus projetos rodem com estabilidade.
Além disso, ferramentas como Snapshot Full ajudam a proteger seus dados em caso de imprevistos.
Com um painel de controle intuitivo e suporte técnico especializado, você pode configurar e gerenciar seus ambientes PHP e Nginx sem complicações. Experimente grátis!