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 estao 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 atumámatica 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 estao disponiveis e direciona as requisições somente para esses.
- Camada de SSL - Pode ser utilizado para instalar o ceritifcado 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
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.
- Coloque todos os domínios e subdomínios que farão parte do projeto, separados por virgula
- Clique no botão “Instalar”
Arquivos Balancer
- /etc/nginx/nginx.conf – Algumas opções globais como numeros 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
Performance Web
- /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
- 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
- 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-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
Confira abaixo o Talk SaveinCloud e confira como é possível garantir estabilidade por meio do nosso sistema em PHP.
Faça como a Siglo Sistemas e realize sua migração para a nuvem com a SaveinCloud. Teste gratuitamente por 14 dias!