Como otimizar performance no Nginx para WooCommerce: 7 ajustes

Por Equipe Técnica AviraHost · 18 min de leitura · Atualizado em · woocommerce, nginx, redis, wordpress, linux, performance, AviraHost · 0

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:

  1. Valide versões, serviços ativos e faça backup dos arquivos do Nginx antes de editar.
  2. Ajuste workers, conexões e keepalive para reduzir espera em picos de acesso.
  3. Ative compressão e cache de arquivos estáticos para diminuir transferência repetida.
  4. Configure FastCGI cache com exclusões para carrinho, checkout, usuários logados e AJAX.
  5. Conecte o WordPress ao Redis como object cache persistente, sem tratar Redis como cache de página.
  6. 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 redis
Output esperado:
nginx version: nginx/1.26.x ou superior
PHP 8.3.x
PONG
active
active

Atençã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.d
Output 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
  1. Meça o estado atual com nginx -v, php -v e redis-cli ping.
  2. Crie backup antes de editar qualquer arquivo.
  3. Separe ajustes globais do Nginx dos ajustes específicos do site.
  4. Teste sintaxe com nginx -t antes de recarregar.
  5. 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 salvar

Depois 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 -t
Output esperado:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Se 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 nginx
Output esperado:
active

Ajuste 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 -t

Agora 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úblico

Valide 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.css
Output esperado:
HTTP/2 200
cache-control: public, immutable
expires: data futura

Se 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 PHP

Atençã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/woocommerce
Output esperado:
sistema de arquivos com espaço livre suficiente
diretório /var/cache/nginx/woocommerce criado
permissões ajustadas para o usuário do Nginx

No 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 BYPASS

Como 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 correto

Teste 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 carrinho

Ajustes 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 redis
Output esperado:
PONG
active

Em 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.conf
Output esperado:
maxmemory valor_definido_no_servidor
maxmemory-policy política_definida_no_servidor

Depois 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.br
Output esperado:
Status: Connected
Client: predis ou phpredis
Drop-in: Valid

O 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-fpm
Output esperado:
php-fpm escutando em socket Unix ou porta local
active

Se 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.log
Output esperado:
syntax is ok
test is successful
nenhum erro novo durante navegação na loja

Teste 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 BYPASS

Finalize 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.

  1. Abrir página inicial e categoria como visitante anônimo.
  2. Abrir produto, adicionar ao carrinho e alterar quantidade.
  3. Aplicar cupom, calcular frete e avançar para checkout.
  4. Fazer login, acessar minha conta e conferir pedidos.
  5. 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

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.

Conheça os planos de Servidor VPS


Esta resposta foi útil?