Guia completo e testado para configurar o Nginx no Almalinux e que funcione em compatibilidade com com o cache em RAM cPanel e WHM. Também está incluindo integração com Cloudflare e 100/100 no PageSpeed.
Só nunca faça sem saber o que está fazendo de fato no seu servidor. Se não tem conhecimento, procure um profissional com experiência para manusear seu servidor.
O Que é o Nginx no Contexto do cPanel

O cPanel opera nativamente com o Apache como servidor web principal. A integração do Nginx nesse ambiente funciona no modelo de proxy reverso: o Nginx fica na frente recebendo todas as requisições HTTP/HTTPS e repassa ao Apache apenas o que exige processamento dinâmico (PHP, CGI), enquanto serve arquivos estáticos diretamente, sem passar pelo Apache.
O resultado prático é uma redução significativa no consumo de memória e no tempo de resposta, especialmente em servidores com múltiplos sites.
Entendendo a Arquitetura do ea-nginx no cPanel
O cPanel utiliza o ea-nginx (EasyApache 4 Nginx) como proxy reverso na frente do Apache. O fluxo de requisição funciona assim:
Visitante → Cloudflare → Nginx (porta 443) → Apache (porta interna) → PHP/WordPress
O Nginx não processa PHP diretamente nesse ambiente: ele recebe a requisição, verifica se tem uma cópia em cache e, se não tiver, repassa ao Apache que processa o PHP. O resultado fica salvo na RAM para as próximas requisições.
Um ponto crítico que diferencia esse ambiente de uma instalação comum: as diretivas de configuração têm lugares específicos onde podem e onde não podem ser declaradas. Colocar uma diretiva no arquivo errado gera o erro not allowed here e impede o servidor de carregar a nova configuração.
Estrutura de Diretórios do ea-nginx no cPanel
Antes de qualquer configuração, é importante entender onde cada coisa fica:
/etc/nginx/
├── nginx.conf ← configuração principal (bloco http)
├── conf.d/
│ ├── ea-nginx.conf ← gerado pelo cPanel, não edite
│ ├── default.conf ← proxy interno do painel cPanel
│ ├── global_cache.conf ← CRIAMOS AQUI (zona de cache global)
│ ├── brotli.conf
│ ├── gzip.conf
│ ├── http2.conf
│ └── users/
│ └── <seu_usuario>/ ← pasta do seu usuário cPanel
│ └── seudominio.com/
│ └── custom_cache.conf ← CRIAMOS AQUI (regras do site)
O Guia para Configurar o Nginx no Almalinux
Passo 1: Descobrir o Usuário Correto do cPanel
Esse é o erro que derruba mais gente. O diretório de customização do Nginx usa o nome do usuário cPanel, não o nome do domínio.
Para descobrir o nome correto, liste as pastas que o cPanel já criou:
ls /etc/nginx/conf.d/users/
O nome que aparecer (exemplo: user11, user-99, site1) é o que você vai usar em todos os comandos a seguir. Nunca chute o nome: use o que o ls mostrar.
Passo 2: Criar os Diretórios Necessários
Com o nome do usuário em mãos, crie a pasta para o domínio que vai receber a configuração de cache:
mkdir -p /etc/nginx/conf.d/users/SEUUSUARIO/seudominio.com/
Substitua SEUUSUARIO pelo nome que apareceu no ls e seudominio.com pelo seu domínio real.
Para confirmar que o diretório foi criado corretamente:
ls /etc/nginx/conf.d/users/SEUUSUARIO/
Se precisar apagar o diretório (por exemplo, se digitou o nome errado):
Digamos que você digitou o caminho e no usuário /NOMEERRADO.com, então cole e ess comando e altere NOMEERRADO.com para o nome da pasta que você criou errada.
rm -rf /etc/nginx/conf.d/users/NOMEERRADO.com/
O rm -rf remove o diretório e tudo dentro dele. Sempre confirme o caminho com ls antes de rodar esse comando.
Passo 3: Configurar o nginx.conf Principal
Esse arquivo controla as configurações globais do servidor. Você vai abrir, limpar o conteúdo atual e colar o bloco completo abaixo.
Abra o arquivo:
nano /etc/nginx/nginx.conf
Para limpar o conteúdo atual no nano:
Posicione o cursor na primeira linha e pressione Alt + T e veja se limpou todo o comteúdo. Ou Ctrl + K repetidamente (linha por linha) até o arquivo ficar vazio. Depois cole o novo conteúdo.
Cole exatamente este bloco:
include /etc/nginx/conf.d/modules/*.conf;
user nobody;
worker_processes auto;
worker_shutdown_timeout 10s;
worker_rlimit_nofile 65536;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include /etc/nginx/conf.d/*.conf;
}
Salve com Ctrl + O, confirme com Enter e saia com Ctrl + X.
Por que não colocar o proxy_cache_path aqui: o nginx.conf principal no cPanel é gerenciado pelo ea-nginx e o include /etc/nginx/conf.d/*.conf vai carregar automaticamente o arquivo de zona de cache que criaremos no próximo passo. Manter o nginx.conf limpo evita conflitos com atualizações automáticas do cPanel.
Passo 4: Criar a Zona de Cache Global
A declaração da zona de cache (proxy_cache_path) só pode ficar dentro do bloco http { }. No ea-nginx, o lugar correto para isso é um arquivo dentro de /etc/nginx/conf.d/, que é incluído automaticamente pelo nginx.conf.
Crie o arquivo:
nano /etc/nginx/conf.d/global_cache.conf
Cole este conteúdo:
proxy_cache_path /var/run/nginx-cache-SEUUSUARIO levels=1:2 keys_zone=meu_cache:10m inactive=60m;
Substitua SEUUSUARIO por algo relacionado ao seu usuário para identificar facilmente (exemplo: nginx-cache-zedasilva). O nome da zona meu_cache pode ser qualquer nome, desde que não conflite com zonas que o cPanel já criou.
Por que não usar o nome “WORDPRESS”: o cPanel com ea-nginx já declara internamente uma zona com esse nome em algum de seus arquivos automáticos. Usar o mesmo nome gera o erro the shared memory zone "WORDPRESS" is already declared for a different use, que impede o Nginx de carregar.
Salve com Ctrl + O, Enter, Ctrl + X.
Passo 5: Criar as Regras de Cache do Site
Agora crie o arquivo dentro da pasta do usuário que será carregado especificamente para o seu domínio:
nano /etc/nginx/conf.d/users/SEUUSUARIO/seudominio.com/custom_cache.conf
Cole exatamente este conteúdo:
# Usa a zona de cache definida no global_cache.conf
proxy_cache meu_cache;
proxy_cache_valid 200 301 302 10m;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
# Header para confirmar se a página veio do cache ou do PHP
add_header X-Cache-Status $upstream_cache_status;
# Não cacheia se o usuário estiver logado no WordPress
set $skip_cache 0;
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
proxy_cache_bypass $skip_cache;
proxy_no_cache $skip_cache;
Salve com Ctrl + O, Enter, Ctrl + X.
O que cada bloco faz:
proxy_cache meu_cache instrui o Nginx a usar a zona de RAM que declaramos no global_cache.conf. proxy_cache_valid 10m define que a cópia em RAM dura 10 minutos antes de precisar buscar novamente no PHP. proxy_cache_use_stale garante que, se o PHP ou o Apache demorar a responder, o Nginx entrega a versão antiga do cache em vez de mostrar erro para o visitante. O bloco $skip_cache garante que você, quando logado no WordPress, sempre veja a versão real e atualizada do site.
Passo 6: Integração com Cloudflare (IP Real dos Visitantes)
Quando o tráfego passa pelo Cloudflare, o IP real do visitante chega ao servidor dentro do header CF-Connecting-IP. Sem configuração específica, seus logs e regras de firewall registram apenas os IPs da Cloudflare.
Crie o arquivo de IPs da Cloudflare:
nano /etc/nginx/conf.d/cloudflare_ips.conf
Cole este conteúdo:
# IPs da Cloudflare — atualize periodicamente em cloudflare.com/ips
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2a06:98c0::/29;
set_real_ip_from 2c0f:f248::/32;
real_ip_header CF-Connecting-IP;
Salve e saia.
Passo 7: Validar a Configuração
Esse passo é obrigatório antes de qualquer restart. O nginx -t testa a sintaxe de todos os arquivos sem aplicar nada. Se ele detectar qualquer erro, o servidor continua rodando com a configuração antiga:
nginx -t
A resposta esperada:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Se aparecer qualquer linha com [emerg] ou failed, o erro vai indicar exatamente o arquivo e a linha do problema. Os erros mais comuns são:
already declared for a different use significa que o nome da zona de cache está repetido. Mude o nome em global_cache.conf e custom_cache.conf para algo único.
directive is not allowed here significa que uma diretiva foi colocada no arquivo de usuário em vez do arquivo global. A proxy_cache_path só pode ficar em global_cache.conf, nunca no custom_cache.conf.
no such file or directory significa que o caminho do diretório de cache na RAM ainda não existe ou o Nginx não tem permissão de escrita.
Passo 8: Aplicar a Configuração via cPanel
Após o nginx -t confirmar que está tudo correto, use o script do cPanel para aplicar:
/usr/local/cpanel/scripts/ea-nginx config zedasilva
Substitua zedasilva pelo seu usuário real. Se o cursor simplesmente voltar para a linha de comando sem mensagem de erro, o comando foi executado com sucesso. No ea-nginx, silêncio significa sucesso.
Para aplicar para todos os usuários do servidor de uma vez:
/usr/local/cpanel/scripts/ea-nginx config --all
Para verificar o status do serviço:
/usr/local/cpanel/scripts/restartsrv_nginx status
Passo 9: Testar se o Cache Está Funcionando
Como o Cloudflare intercepta as requisições externas, o teste mais confiável é bater direto no servidor local ignorando o proxy:
curl -I -k -H "Host: www.seudominio.com" https://127.0.0.1
Rode o comando duas vezes. O resultado esperado:
Na primeira execução aparece x-cache-status: MISS. Isso significa que o Nginx foi buscar a página no Apache/PHP porque ainda não tinha cópia em cache.
Na segunda execução aparece x-cache-status: HIT. Isso confirma que a página foi entregue direto da memória RAM, sem passar pelo PHP.
O HIT é a confirmação de que o cache está funcionando.
Passo 10: Limpar o Cache Quando Necessário
Para limpar o cache do site após publicar uma atualização importante antes dos 10 minutos expirarem:
/usr/local/cpanel/scripts/ea-nginx clear_cache zedasilva
Para limpar o cache de todos os sites no servidor:
/usr/local/cpanel/scripts/ea-nginx clear_cache --all
Convivência com o WP Fastest Cache
Com o Nginx cuidando do cache de servidor, o papel do WP Fastest Cache muda. O plugin continua útil para duas funções específicas que o Nginx não controla diretamente.
O cache de navegador instrui o browser do visitante a guardar imagens, CSS e JavaScript por 30 dias localmente. Isso reduz o tempo de carregamento nas visitas seguintes e impacta diretamente o LCP no PageSpeed Insights.
O Gzip garante que o HTML saia compactado do WordPress antes de chegar ao Nginx, reduzindo o tamanho do payload.
O que deve ser desativado no plugin para não gerar trabalho duplicado é o cache de página (Page Cache / Preload), que agora é responsabilidade do Nginx, e o Minify HTML/CSS, que fica melhor sendo feito via Cloudflare ou diretamente no tema.
Referência Rápida de Comandos
| Ação | Comando |
|---|---|
| Validar configuração | nginx -t |
| Aplicar config de um usuário | /usr/local/cpanel/scripts/ea-nginx config USUARIO |
| Aplicar config de todos | /usr/local/cpanel/scripts/ea-nginx config --all |
| Status do Nginx | /usr/local/cpanel/scripts/restartsrv_nginx status |
| Limpar cache de um usuário | /usr/local/cpanel/scripts/ea-nginx clear_cache USUARIO |
| Limpar cache de todos | /usr/local/cpanel/scripts/ea-nginx clear_cache --all |
| Testar cache local | curl -I -k -H "Host: seudominio.com" https://127.0.0.1 |
| Listar usuários cPanel | ls /etc/nginx/conf.d/users/ |
| Ver configuração ativa | nginx -T | grep proxy_cache |