Se o seu servidor precisa chamar o PHP e fazer consultas no MySQL toda vez que um visitante anônimo abre um post no blog, você está gastando processamento e memória à toa. O módulo fastcgi_cache do Nginx guarda as páginas prontas em cache e entrega o HTML em menos de 20 milissegundos, sem precisar tocar no PHP. O segredo para isso funcionar em sites dinâmicos e e-commerces é configurar as regras de bypass para não cachear carrinhos, áreas logadas ou formulários. Veja como estruturamos isso em Otimização de Sites e Servidores.

Passo a passo da configuração
- 1. O que acontece quando o Nginx entrega o cache direto
- 2. Definindo a pasta e os limites com fastcgi_cache_path
- 3. As regras essenciais para não cachear carrinho nem login
- 4. Como testar se o cache está funcionando com curl
- 5. Como limpar o cache automaticamente ao editar um post
- 6. Como colocar isso para rodar no seu site
1. O que acontece quando o Nginx entrega o cache direto
Sem cache no Nginx, o fluxo padrão de cada acesso funciona assim: o Nginx recebe o pedido, passa para o PHP-FPM, o PHP compila os arquivos, carrega plugins, consulta o banco de dados, monta o HTML e devolve. Esse processo costuma demorar entre 150ms e 400ms mesmo em servidores rápidos.
Quando você ativa o fastcgi_cache, na primeira vez que alguém abre a página o Nginx salva uma cópia do HTML pronto em disco ou na memória RAM. Do segundo visitante em diante, o Nginx lê aquele arquivo e entrega na hora. A resposta cai para 10ms a 20ms e o uso de processador do servidor cai praticamente a zero para visitantes que estão apenas lendo conteúdo.
Seu site consome muita CPU com poucos acessos simultâneos?
Se a maioria das suas visitas é de leitores anônimos, você não deveria estar executando PHP para todo mundo. Nós configuramos o fastcgi_cache sem quebrar nada.
2. Definindo a pasta e os limites com fastcgi_cache_path
A configuração começa no arquivo principal /etc/nginx/nginx.conf, dentro do bloco http { ... }:
fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m max_size=2g inactive=60m use_temp_path=off;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header updating http_500 http_503;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
O parâmetro use_temp_path=off é muito útil porque manda o Nginx escrever o arquivo de cache direto na pasta final, sem fazer cópias intermediárias que gastam disco sem necessidade.
3. As regras essenciais para não cachear carrinho nem login
A parte mais importante é garantir que o cache nunca mostre a conta ou o carrinho de compras de uma pessoa para outra. Para isso, você define as exceções no arquivo do seu site em /etc/nginx/sites-available/seusite.conf:
set $skip_cache 0;
# Requisições POST nunca usam cache
if ($request_method = POST) {
set $skip_cache 1;
}
# Páginas com parâmetros de busca ou query strings
if ($query_string != "") {
set $skip_cache 1;
}
# Painel de administração e páginas de compra
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/cart/|/checkout/|/my-account/") {
set $skip_cache 1;
}
# Usuários logados no WordPress ou com itens no carrinho do WooCommerce
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|woocommerce_items_in_cart") {
set $skip_cache 1;
}
Depois, dentro do bloco location ~ \.php$, você adiciona:
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 301 302 60m;
Quer ter certeza de que o cache não vai vazar dados de usuários?
Se você tem uma loja com WooCommerce ou área de membros, as regras de cookie precisam ser muito bem testadas. Conheça nossa Auditoria Técnica.
4. Como testar se o cache está funcionando com curl
Para ver se o Nginx está mesmo servindo do cache, adicione esta linha no seu arquivo de configuração:
add_header X-FastCGI-Cache $upstream_cache_status;
Depois reinicie o Nginx e faça o teste com o curl pelo terminal:
curl -I https://seusite.com.br/artigo/
Na primeira tentativa você verá X-FastCGI-Cache: MISS (porque o Nginx acabou de gerar a página). Na segunda tentativa, a resposta muda para X-FastCGI-Cache: HIT. Isso indica que o PHP não precisou rodar para atender a requisição.
5. Como limpar o cache automaticamente ao editar um post
Para você não precisar entrar no servidor toda vez que publicar ou editar um post, nós instalamos módulos como o nginx-cache-purge integrados aos hooks do WordPress. Quando você clica em atualizar no painel, o Nginx apaga apenas o arquivo correspondente àquela página e à página inicial, mantendo o resto do site cacheado.
Essa velocidade ajuda diretamente no seu posicionamento no Google, porque o tempo de resposta inicial cai para números excelentes nos relatórios do Core Web Vitals e na nossa Consultoria de SEO Técnico.
6. Como colocar isso para rodar no seu site
Se você quer que seu site abra rápido para milhares de pessoas sem precisar contratar servidores caros demais, entre em contato comigo. Eu, Jonathan Pavão, configuro sua estrutura de Nginx e cache sob medida para o seu tipo de negócio.
Fale comigo no WhatsApp
Vamos analisar sua hospedagem e acelerar seu site com Nginx.