Se você tem um site, blog ou e-commerce com alto volume de acessos e busca por soluções que o tornem escalável e com melhor desempenho, então está na hora de entender melhor o que o NGINX pode fazer por você.
Prepare seu PHP pra receber mais visitas sem perder performance.
Instale e configure sua aplicação com NGINX escalável aqui na Saveincloud.
Faça um teste grátis com a gente por 14 dias. Acesse o link https://cloud.saveincloud.com.br/lp/nginx-escalavel-com-php/
Fale com a nossa equipe pelo whatsapp https://bit.ly/Saveincloud
4. NA PRÁTICA - INÍCIO CLOUDFLARE
1. Criar uma conta CloudFlare e adicionar um site no plano
Free
2. Alterar Nameserver no registro (preservando as mesmas
entradas necessárias dos outros serviços - sem impactos)
3. Para evitar problemas, sugiro que todos os
apontamentos estejam no começo no tipo DNS-Only
4. Aguardar publicação (até 1 dia)
6. CLOUDFLARE - Funcionalidades sugeridas
1. SSL / TLS / Visão Geral -> Manter o SSL do tipo Completo
2. SSL / TLS / Certificados de Borda -> Marcar Sempre usar HTTPS
3. Speed / Otimização -> Minificação automática manter ativado
Javascript, CSS e HTML. Ativar Brotli. NÃO ativar o Rocket Loader.
4. Rede -> Ativar HTTP/3 (com QUIC), Ativar 0-RTT, WebSockets e Onion
Routing
7. NA PRÁTICA - BALANCER APLICAÇÃO
UTILIZANDO O NGINX
COMO BALANCER
➔ Distribuir as requisições
➔ Camada de SSL (se não tiver o
CloudFlare)
➔ Active Fail Over
➔ Stick Sessions
10. AUTOMAÇÃO
➔ Atenção aos ips públicos dos balancers
➔ Fazer o apontamento de IPs no cloudflare, o mesmo apontamento para ambos IPs
NA PRÁTICA - APONTAMENTO DNS
11. AUTOMAÇÃO
➔ Clicar no botão Add-on, no
container balancer, e “Instalar” o
Let’s Encrypt Free SSL
➔ Colocar todos os domínios e
subdomínios que farão parte do
projeto, separados por vírgula
➔ Se tiver passando pelo Cloudflare,
vai dar alguns erros mas o
importante é ele apenas instalar
NA PRÁTICA - INSTALAR SSL
12. AUTOMAÇÃO
➔ O balancer já vem configurado e otimizado sem necessidade de alterações, não
recomendamos alterar nenhuma configuração se não tiver conhecimentos avançados
➔ Em configurações, é possível acessar os arquivos dos containers, e modificá-los caso tenha
necessidade, seguem os principais:
/etc/nginx/nginx.conf -> Algumas opções globais como numero de processos
/etc/nginx/nginx-jelastic.conf -> Regras de apontamentos da porta 80
/etc/nginx/conf.d/ssl.conf -> Regras de apontamentos da porta 443
NA PRÁTICA - ARQUIVOS BALANCER
13. AUTOMAÇÃO★ Revisar configurações globais do NGINX WEB:
/etc/nginx/nginx.conf
★ Revisar configurações específicas do Domínio
/etc/nginx/conf.d/seudominio.com.br.conf (sugestão criar um arquivo novo por domínio
para manter organizado)
★ Revisar configurações específicas do PHP
/etc/php.ini
/etc/php-fpm.conf
NA PRÁTICA - PERFORMANCE WEB
14. AUTOMAÇÃO★ /etc/nginx/nginx.conf
○ worker_processes auto;
○ worker_rlimit_nofile 12000;
○ worker_connections 5000; (ou mais, sempre aprox. 40% do rlimit) -> numero maximo de
usuarios conectados (calcular worker_connections * worker_processes)
○ GZIP já vem habilitado e isso é importante. Analisar possibilidade de colocar a opção
gzip_static on; que é bem interessante.
○ sendfile on;
○ multi_accept on; -> dentro da tag events embaixo do worker_connections
○ ese epoll; -> dentro da tag events embaixo do worker_connections
○ Uso de keepalive (já vem habilitado)
○ Desabilitar Logs se não desejar, comentando as linhas access_log e error_log (cuidado)
NA PRÁTICA - NGINX.CONF
15. AUTOMAÇÃO
★ /etc/nginx/conf.d/seudominio.com.br.conf
○ Para funcionar as rotas de wordpress, atenção em incluir essa linha dentro da tag location / abaixo
da linha com o parâmetro root:
try_files $uri $uri/ /index.php?$args;
○ Cache no domínio (usar com cuidado), se desejar ter cache (no exemplo abaixo, de 30 dias, nas
extensões de arquivos abaixo), adicionar a linha:
location ~* .(?:ico|css|js|json|gif|jpe?g|png|woff2)$ { expires 7d; }
○ Para wordpress, por segurança, adicionar isso abaixo da linha server_name:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
return 444;
}
NA PRÁTICA - seudominio.com.br.conf
16. AUTOMAÇÃO
★ /etc/php.ini (OP Cache, o segredo da performance)
Manter as configurações que já estão otimizadas, se desejar apenas ajustar o uso de
memória se desejar, na variável memory_limit.
★ /etc/php-fpm.conf
○ Conceitos do pm = static, dynamic e ondemand
(https://tideways.com/profiler/blog/an-introduction-to-php-fpm-tuning)
○ pm.max_children = 2 (sugestão 1 por core), não menor que 2 (comando no ssh /proc/cpuinfo mostra
quantos cores possui). Você pode alterar isso no variáveis também do ambiente, chamado
PHPFPM_MAX_CHILDREN.
○ pm.process_idle_timeout = 10s
○ pm.max_requests = 5000
NA PRÁTICA - php.ini e php-fpm.conf
17. EXTRA - RESTART SEM DOWNTIME
AUTOMAÇÃO
Após a alteração de alguma variável de configuração do serviço, normalmente é
necessário reiniciar.
Com o restart sequencial, é possível realizar esse procedimento com um intervalo de
tempo, garantindo assim a disponibilidade do serviço.
18. EXTRA - DEPLOY SEM DOWNTIME
AUTOMAÇÃO
Mais informações:
Guia de Publicação do Jelastic
19. AUTOMAÇÃO
Em um ambiente de escalabilidade horizontal da aplicação, sugerimos analisar os também:
➔ Replicação das sessões: com o stick session, diminui a possibilidade de ocorrer problemas com sessões, mas
se um container fica indisponível, os usuários serão direcionados automaticamente para o outro, e perderão
suas sessões.
Mais info: https://docs.jelastic.com/memcached-php-sessions/
➔ Arquivos em comum que não fazem parte do projeto e são enviados normalmente por usuários (exemplo:
uma pasta de upload). Nesse caso, é necessário replicar esse arquivo entre os servidores, existem duas
maneiras:
◆ https://docs.jelastic.com/file-synchronization/
◆ https://docs.jelastic.com/shared-storage-container/
➔ Monitoramento profissional: Adicione de maneira automática o monitoramento Nginx Amplify, detalhes na
URL: https://saveincloud.com/pt/blog/jelastic-cloud/nginx-amplify
NA PRÁTICA - Detalhes adicionais