Melhorar a performance no Nginx para WooCommerce significa ajustar a camada HTTP, cache e Redis sem comprometer carrinho, checkout, login e área administrativa da loja. Para acelerar WooCommerce em Linux com Nginx e Redis, siga estes passos:
- Valide versões, serviços ativos e faça backup dos arquivos do Nginx antes de editar.
- Ajuste workers, conexões e keepalive para reduzir espera em picos de acesso.
- Ative compressão e cache de arquivos estáticos para diminuir transferência repetida.
- Configure FastCGI cache com exclusões para carrinho, checkout, usuários logados e AJAX.
- Conecte o WordPress ao Redis como object cache persistente, sem tratar Redis como cache de página.
- Teste sintaxe, recarregue serviços e valide compra real em ambiente controlado.
Pré-requisitos
- Acesso SSH com usuário administrativo ao servidor Linux onde rodam Nginx, PHP-FPM, WordPress e WooCommerce. Se precisar revisar o acesso, veja Acessando servidores VPS Linux da AviraHost.
- Nginx 1.26 ou superior (versão estável recomendada), PHP 8.3 ou superior, Redis disponível no servidor e WooCommerce já funcional antes da otimização.
- Loja usando HTTPS corretamente, pois carrinho e checkout devem operar com sessão segura. Para reforçar redirecionamento, consulte Como redirecionar um site http para https?.
- Acesso aos arquivos de configuração do Nginx, normalmente em /etc/nginx/nginx.conf e /etc/nginx/conf.d/.
- Permissão para executar nginx -t, systemctl reload nginx e redis-cli ping.
- Janela de manutenção ou horário de menor movimento para testar carrinho, checkout, login, cupons e wp-admin.
Configurando os 7 ajustes no Nginx para acelerar o WooCommerce
FastCGI cache Nginx WordPress WooCommerce precisa ser configurado com critério, porque WooCommerce mistura páginas públicas altamente cacheáveis com páginas dinâmicas que não podem ser servidas de forma antiga. Antes de mexer em cache, confirme o estado atual dos serviços e salve cópias dos arquivos. Ao rodar estes comandos, você verá se Nginx, PHP-FPM e Redis estão respondendo antes de qualquer alteração.
nginx -v
php -v
redis-cli ping
systemctl is-active nginx
systemctl is-active redisOutput esperado:
nginx version: nginx/1.26.x ou superior
PHP 8.3.x
PONG
active
activeAtenção: antes de alterar Nginx em produção, faça backup dos arquivos atuais. O comando abaixo copia a configuração principal e os arquivos de sites para versões de segurança com data no nome. Ele não apaga nada, mas deve ser executado com usuário que tenha permissão de leitura nesses diretórios.
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak-$(date +%F)
sudo tar -czf /root/nginx-conf.d-bak-$(date +%F).tar.gz /etc/nginx/conf.dOutput esperado:
sem erro na tela
arquivo nginx.conf.bak-AAAA-MM-DD criado
arquivo /root/nginx-conf.d-bak-AAAA-MM-DD.tar.gz criado- Meça o estado atual com nginx -v, php -v e redis-cli ping.
- Crie backup antes de editar qualquer arquivo.
- Separe ajustes globais do Nginx dos ajustes específicos do site.
- Teste sintaxe com nginx -t antes de recarregar.
- Valide WooCommerce com usuário anônimo e usuário logado.
Como aplicar cada ajuste sem quebrar carrinho e checkout
A regra prática é simples: páginas públicas podem ganhar cache agressivo; carrinho, checkout, minha conta, wp-admin, AJAX e cookies do WooCommerce devem escapar do cache. Esse cuidado evita o erro clássico de exibir carrinho vazio, pedido antigo ou sessão de outro estado para o comprador.
Ajuste 1: workers, conexões e keepalive do Nginx
Reduzir TTFB WooCommerce Nginx começa por remover gargalos básicos de conexão. O TTFB (Time to First Byte) é diretamente afetado por filas de processamento PHP e pelo número de conexões simultâneas que o Nginx consegue atender — fatores que também influenciam os Core Web Vitals da loja. O Nginx trabalha com processos e conexões simultâneas; se esses limites forem baixos, a loja pode responder bem em poucos acessos e piorar quando campanhas, robôs de busca ou carrinhos simultâneos aumentam. Em servidores modernos, worker_processes auto é um ponto de partida seguro porque deixa o Nginx alinhar processos à capacidade disponível.
Edite /etc/nginx/nginx.conf e confirme se as diretivas globais seguem esta linha. Cole os trechos no contexto correto: worker_processes no topo do arquivo, worker_connections dentro do bloco events e keepalive_timeout no bloco http.
worker_processes auto;
worker_rlimit_nofile 65535;
worker_connections 4096;
multi_accept on;
keepalive_timeout 30;
keepalive_requests 1000;
sendfile on;
tcp_nopush on;
tcp_nodelay on;Output esperado:
diretivas salvas no arquivo de configuração
nenhuma mensagem de erro ao salvarDepois de salvar, valide a configuração. Não recarregue o Nginx se o teste acusar erro, porque uma diretiva fora do contexto correto pode impedir o serviço de aplicar a nova configuração.
sudo nginx -tOutput esperado:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulSe o teste passar, recarregue sem derrubar conexões ativas. Em uma loja WooCommerce, prefira reload em vez de restart sempre que possível, porque o reload aplica a configuração de forma mais suave.
sudo systemctl reload nginx
systemctl is-active nginxOutput esperado:
activeAjuste 2: compressão e cache de arquivos estáticos
Otimização Nginx loja virtual depende muito de como CSS, JavaScript, fontes e imagens são entregues. WooCommerce carrega recursos do tema, do WordPress e de extensões; se o navegador baixa tudo novamente a cada visita, a experiência piora sem necessidade. O Nginx pode comprimir conteúdo textual e orientar o navegador a manter arquivos estáticos em cache por mais tempo.
Use gzip para conteúdo textual. Cole no bloco http do Nginx. Evite aplicar compressão a arquivos que já são comprimidos por natureza, como imagens WebP, PNG e JPG, pois isso tende a desperdiçar CPU.
gzip on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_vary on;
gzip_types text/plain text/css application/javascript application/json application/xml image/svg+xml;Output esperado:
configuração aceita pelo Nginx após nginx -tAgora aplique cache para arquivos estáticos dentro do bloco server do domínio seudominio.com.br. O exemplo abaixo deve ficar na localização de estáticos do site, ajustada ao seu arquivo de virtual host. Ele não deve ser usado para páginas PHP, carrinho ou checkout.
location ~* \.(css|js|jpg|jpeg|png|gif|webp|svg|ico|woff|woff2)$
expires 30d;
add_header Cache-Control "public, immutable";Output esperado:
arquivos estáticos passam a retornar cabeçalho Cache-Control públicoValide com curl em um arquivo real do tema ou plugin. Troque o caminho pelo arquivo existente na sua loja.
curl -I https://seudominio.com.br/wp-content/themes/tema/style.cssOutput esperado:
HTTP/2 200
cache-control: public, immutable
expires: data futuraSe o cabeçalho não aparecer, o trecho pode estar em um bloco que não atende esse caminho, ou outra regra mais específica pode estar sobrescrevendo a resposta.
Ajustes 3 e 4: FastCGI cache com exclusões do WooCommerce
Nginx WooCommerce cache carrinho checkout é o ponto mais sensível da otimização. O FastCGI cache pode reduzir chamadas repetidas ao PHP-FPM em páginas públicas, mas não deve armazenar respostas personalizadas. Em WooCommerce, qualquer regra de cache precisa respeitar URLs críticas e cookies que indicam carrinho, sessão, usuário logado ou itens adicionados.
Crie uma zona de cache no contexto http. Este trecho define onde o cache ficará no disco e por quanto tempo metadados serão mantidos. Ajuste o caminho conforme sua organização, mantendo permissão adequada para o usuário do Nginx.
fastcgi_cache_path /var/cache/nginx/woocommerce levels=1:2 keys_zone=WOOCOMMERCE:100m inactive=60m max_size=1g;
fastcgi_cache_key "$scheme$request_method$host$request_uri";Output esperado:
zona WOOCOMMERCE disponível para uso em blocos PHPAtenção: criar cache em disco consome espaço. Antes de ativar em loja com tráfego, confirme espaço livre e monitore crescimento do diretório de cache.
df -h /var/cache/nginx
sudo mkdir -p /var/cache/nginx/woocommerce
sudo chown -R nginx:nginx /var/cache/nginx/woocommerceOutput esperado:
sistema de arquivos com espaço livre suficiente
diretório /var/cache/nginx/woocommerce criado
permissões ajustadas para o usuário do NginxNo bloco PHP do site, aplique cache somente com bypass e no-cache baseados em método, query string e cookies. A forma abaixo é conservadora para WooCommerce: evita cache quando há POST, query string, cookies de login, carrinho, itens adicionados ou sessão WooCommerce.
fastcgi_cache WOOCOMMERCE;
fastcgi_cache_valid 200 301 302 10m;
fastcgi_cache_methods GET HEAD;
fastcgi_cache_bypass $http_cookie $query_string;
fastcgi_no_cache $http_cookie $query_string;
add_header X-FastCGI-Cache $upstream_cache_status always;Output esperado:
respostas passam a incluir X-FastCGI-Cache com MISS, HIT ou BYPASSComo as páginas de carrinho e checkout são críticas, também exclua seus caminhos na configuração do servidor. A lógica exata depende do layout do seu arquivo, mas o objetivo é garantir que /carrinho/, /checkout/, /minha-conta/ e /wp-admin/ nunca usem cache de página.
fastcgi_no_cache $request_uri;
fastcgi_cache_bypass $request_uri;Output esperado:
URLs críticas não são armazenadas quando a regra é aplicada no contexto corretoTeste uma página pública e depois uma URL de carrinho. Em página pública, você pode ver MISS na primeira chamada e HIT em chamada posterior. Em carrinho ou checkout, o esperado é BYPASS ou ausência de armazenamento.
curl -I https://seudominio.com.br/
curl -I https://seudominio.com.br/carrinho/Output esperado:
X-FastCGI-Cache: MISS ou HIT na página pública
X-FastCGI-Cache: BYPASS no carrinhoAjustes 5 e 6: Redis object cache e PHP-FPM mais previsível
Redis object cache WooCommerce Linux atua em uma camada diferente do cache de página. Ele armazena objetos e consultas frequentes em memória, reduzindo trabalho repetido do banco de dados quando o WordPress está integrado ao Redis. Porém, Redis instalado sozinho não acelera WooCommerce; o WordPress precisa estar conectado ao serviço por plugin compatível ou configuração equivalente.
Confirme que o Redis responde localmente. Se o retorno não for PONG, resolva o serviço antes de ativar integração no WordPress.
redis-cli ping
systemctl is-active redisOutput esperado:
PONG
activeEm seguida, revise limites de memória do Redis no arquivo de configuração da sua distribuição. O objetivo é impedir crescimento sem controle. Não há um valor universal: ele deve considerar RAM disponível, PHP-FPM, banco de dados e tráfego da loja.
sudo grep -E "^(maxmemory|maxmemory-policy)" /etc/redis/redis.confOutput esperado:
maxmemory valor_definido_no_servidor
maxmemory-policy política_definida_no_servidorDepois de configurar Redis, valide pelo WordPress se o object cache persistente está ativo. Como o método de integração varia, confirme no painel ou via WP-CLI quando disponível. O importante é diferenciar object cache de page cache: Redis ajuda em objetos, transients e consultas; ele não substitui as exclusões corretas do Nginx para carrinho e checkout.
wp redis status --path=/var/www/seudominio.com.brOutput esperado:
Status: Connected
Client: predis ou phpredis
Drop-in: ValidO sexto ajuste é reduzir variação no PHP-FPM. Mesmo com Nginx ajustado, WooCommerce depende de PHP para páginas dinâmicas. Valide se o socket ou porta configurado no Nginx realmente corresponde ao pool PHP-FPM usado pela loja.
ss -ltnp | grep php-fpm
systemctl is-active php-fpmOutput esperado:
php-fpm escutando em socket Unix ou porta local
activeSe o Nginx aponta para socket inexistente, a loja pode apresentar erro 502. Se o PHP-FPM estiver sobrecarregado, o cache pode mascarar parte do problema em páginas públicas, mas checkout continuará lento. Ajuste cache e PHP-FPM como camadas complementares, não como soluções isoladas.
Ajuste 7: validação, logs e teste de jornada de compra
Configurar Redis WordPress WooCommerce e cache no Nginx só deve ser considerado concluído depois de testes funcionais. Em loja virtual, velocidade sem consistência não serve: é preciso confirmar que o visitante vê produtos atualizados, consegue adicionar ao carrinho, aplicar cupom, fazer login, avançar no checkout e acessar pedidos na conta.
Valide sintaxe do Nginx, recarregue e acompanhe logs em tempo real. Ao rodar tail, faça uma navegação completa na loja em outra aba para observar erros relacionados a PHP, cache, upstream ou permissões.
sudo nginx -t
sudo systemctl reload nginx
sudo tail -f /var/log/nginx/error.logOutput esperado:
syntax is ok
test is successful
nenhum erro novo durante navegação na lojaTeste também os cabeçalhos de cache em URLs diferentes. Uma página pública pode retornar HIT depois da primeira visita. Carrinho, checkout, minha conta e wp-admin não devem ser servidos como HIT.
curl -I https://seudominio.com.br/
curl -I https://seudominio.com.br/checkout/
curl -I https://seudominio.com.br/minha-conta/Output esperado:
página inicial: X-FastCGI-Cache MISS ou HIT
checkout: X-FastCGI-Cache BYPASS
minha conta: X-FastCGI-Cache BYPASSFinalize com uma lista de verificação manual. Faça o teste anônimo e logado, porque cookies mudam o comportamento do cache. Se a loja usa cupons, meios de pagamento externos ou cálculo de frete, inclua essas etapas na validação.
- Abrir página inicial e categoria como visitante anônimo.
- Abrir produto, adicionar ao carrinho e alterar quantidade.
- Aplicar cupom, calcular frete e avançar para checkout.
- Fazer login, acessar minha conta e conferir pedidos.
- Limpar cache do Nginx apenas se houver conteúdo público antigo.
Problemas comuns e como resolver
Sintoma: carrinho mostra itens errados ou não atualiza
Causa: regras de cache do Nginx estão armazenando páginas que dependem de sessão, cookies ou requisições AJAX do WooCommerce.
Solução: exclua carrinho, checkout, minha conta, wp-admin, URLs com query string e respostas com cookies do WooCommerce. Depois limpe o cache do Nginx e teste como visitante anônimo e usuário logado.
Sintoma: Redis está ativo, mas a loja não ficou mais rápida
Causa: Redis pode estar instalado no Linux, mas o WordPress não está usando object cache persistente. Também é possível que o gargalo principal esteja no PHP-FPM, banco de dados, tema ou chamadas externas.
Solução: confirme conexão do WordPress ao Redis com wp redis status ou painel do plugin. Em seguida, compare logs e comportamento do Nginx, PHP-FPM e banco antes de aumentar memória ou trocar políticas do Redis.
Sintoma: erro 502 após alterar cache ou PHP-FPM
Causa: o Nginx pode estar apontando para socket ou porta PHP-FPM incorreta, ou o serviço PHP-FPM não está ativo.
Solução: rode ss -ltnp para localizar o PHP-FPM, confira fastcgi_pass no arquivo do site e valide nginx -t antes do reload. Se necessário, reverta o backup criado no início.
Sintoma: cabeçalho X-FastCGI-Cache nunca mostra HIT
Causa: a regra está conservadora demais, todos os acessos carregam cookies, ou a configuração foi aplicada no bloco errado do Nginx.
Solução: teste com janela anônima, sem login, em uma página pública. Confira se a zona fastcgi_cache_path está no contexto http e se fastcgi_cache foi aplicado no bloco PHP do site correto.
Perguntas frequentes sobre performance no Nginx e WooCommerce
Redis melhora mesmo o desempenho do WooCommerce?
Redis pode melhorar o desempenho do WooCommerce ao armazenar objetos e consultas frequentes em memória, reduzindo chamadas repetidas ao banco de dados. Ele deve ser configurado com cuidado para não cachear sessões sensíveis, carrinho ou checkout de forma incorreta.
O Nginx pode quebrar carrinho e checkout do WooCommerce?
Sim, regras de cache mal configuradas no Nginx podem entregar páginas antigas para usuários logados ou compradores com itens no carrinho. A configuração correta deve excluir checkout, carrinho, minha conta, requisições AJAX e cookies relevantes do WooCommerce.
Preciso usar Nginx e Redis juntos para otimizar WooCommerce?
Não é obrigatório, mas a combinação é comum porque cada tecnologia atua em uma camada diferente. O Nginx otimiza entrega HTTP, compressão e cache de páginas, enquanto o Redis reduz pressão no banco ao armazenar objetos em memória.
Qual cuidado tomar antes de alterar Nginx e Redis em produção?
Faça backup dos arquivos de configuração, registre o estado atual dos serviços e teste as alterações com comandos de validação antes de recarregar o Nginx ou reiniciar o Redis. Em loja ativa, valide carrinho, checkout, login, cupons e área administrativa após cada ajuste.
WooCommerce em Linux precisa de plugin para usar Redis?
Na prática, o WordPress precisa de integração para usar Redis como object cache persistente, normalmente por plugin compatível ou configuração equivalente. O Redis sozinho instalado no Linux não acelera o WooCommerce se o WordPress não estiver conectando ao serviço.
Conclusão
- Comece por backup, validação de versões e teste de sintaxe antes de recarregar Nginx ou Redis.
- Use cache de página apenas para conteúdo público e mantenha carrinho, checkout, minha conta, AJAX e cookies fora do FastCGI cache.
- Trate Redis como object cache persistente integrado ao WordPress, validando conexão e impacto real na jornada de compra.
Leia também
- Entenda por que o WooCommerce fica lento e como corrigir
- Otimizar imagens no WordPress sem plugin: do upload ao WebP
- Solucionar plugin causando lentidão no WordPress (e desativar cirurgicamente)
Precisa de ajuda com otimização de Nginx e Redis para WooCommerce?
A AviraHost oferece infraestrutura adequada para lojas que precisam ajustar Nginx, Redis, PHP-FPM e cache com mais controle técnico. Um ambiente bem dimensionado facilita testes, rollback e evolução da performance sem depender de improvisos.