Purgação de Cache do WordPress em VPS
Invalidacão instantânea e automática de cache para WordPress em qualquer VPS ou servidor dedicado baseado em RHEL.
-
Invalidacão Automática
O cache é purgado automaticamente quando você edita posts, páginas ou comentários
-
Precisão Cirúrgica
Apenas a página alterada é purgada—todo o seu site permanece em cache e rápido
-
Configuração em 5 Minutos
Configuração simples com nossos módulos NGINX pré-construídos
-
Cache Baseado em Disco
O cache sobrevive a reinicializações do NGINX—sem cache frio após atualizações
Pré-requisitos
- Um VPS ou servidor dedicado rodando RHEL 7/8/9, Rocky Linux, AlmaLinux ou Amazon Linux
- NGINX instalado (recomendado a partir do repositório GetPageSpeed)
- Site WordPress com cache de página completa configurado
Configuração Rápida
Passo 1: Instalar o Módulo de Purgação de Cache
# Instalar repositório GetPageSpeed
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
# Instalar o módulo de purgação de cache
dnf -y install nginx-module-cache-purge
Ative o módulo em /etc/nginx/nginx.conf:
load_module modules/ngx_http_cache_purge_module.so;
Passo 2: Configurar o Cache Proxy do NGINX
Se você ainda não tiver o cache proxy configurado, aqui está uma configuração completa:
Edite /etc/nginx/nginx.conf ou crie /etc/nginx/conf.d/proxy-cache.conf:
# Definir zona de cache (no bloco http)
proxy_cache_path /var/cache/nginx/wordpress
levels=1:2
keys_zone=wordpress:100m
max_size=10g
inactive=60m
use_temp_path=off;
No seu bloco de servidor:
server {
listen 80;
server_name example.com;
# Habilitar cache
proxy_cache wordpress;
proxy_cache_valid 200 60m;
proxy_cache_valid 404 1m;
proxy_cache_key "$scheme$request_method$host$request_uri";
# Adicionar cabeçalho de status do cache
add_header X-Cache-Status $upstream_cache_status;
# Habilitar método PURGE (apenas localhost)
proxy_cache_purge PURGE from 127.0.0.1;
location / {
proxy_pass http://127.0.0.1:8080; # Seu backend
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Crie o diretório de cache:
mkdir -p /var/cache/nginx/wordpress
chown nginx:nginx /var/cache/nginx/wordpress
nginx -t && systemctl reload nginx
Passo 3: Instalar o Plugin Proxy Cache Purge
- Vá para Plugins → Adicionar Novo
- Pesquise por "Proxy Cache Purge" (slug:
varnish-http-purge) - Clique em Instalar Agora, depois Ativar
wp plugin install varnish-http-purge --activate
Passo 4: Configurar Proxy Cache Purge
No admin do WordPress:
- Vá para Configurações → Proxy Cache Purge
- Defina "Definir IP Personalizado" para:
127.0.0.1 - Clique em Salvar Configurações
Configuração Crítica
O plugin deve enviar requisições PURGE para 127.0.0.1 (localhost), não para seu IP público.
Passo 5: Configurar Backend de Cache do NGINX
A partir da versão Proxy Cache Purge 5.9.0, o plugin suporta nativamente o formato de purgação wildcard do NGINX. Configure-o para usar o backend do NGINX:
- Vá para Proxy Cache Purge → Configurações
- Em Cache Backend, selecione NGINX
- Clique em Salvar Configurações
Adicione ao seu wp-config.php:
define( 'VHP_PURGE_BACKEND', 'nginx' );
Legado: Versão do plugin < 5.9.0
Se você estiver usando o Proxy Cache Purge anterior a 5.9.0, crie
wp-content/mu-plugins/nginx-cache-purge-fix.php:
<?php
/**
* Nome do Plugin: NGINX Cache Purge Fix
* Descrição: Anexa wildcard para URLs de purgação para compatibilidade com o cabeçalho Vary
*/
add_filter("vhp_purgeme_path", function($purgeme, $schema, $host, $path, $pregex, $p) {
if (empty($pregex)) {
$purgeme .= "*";
}
return $purgeme;
}, 10, 6);
Testar a Configuração
# 1. Cache uma página
curl -sI http://127.0.0.1/sample-page/ -H 'Host: example.com' | grep X-Cache
# X-Cache-Status: MISS (primeira requisição)
curl -sI http://127.0.0.1/sample-page/ -H 'Host: example.com' | grep X-Cache
# X-Cache-Status: HIT (cacheado!)
# 2. Purge a página
curl -sX PURGE 'http://127.0.0.1/sample-page/*' -H 'Host: example.com'
# <h1>Purgado com sucesso</h1>
# 3. Verifique se o cache foi limpo
curl -sI http://127.0.0.1/sample-page/ -H 'Host: example.com' | grep X-Cache
# X-Cache-Status: MISS (limpo!)
Como Funciona
flowchart LR
subgraph WP["WordPress"]
A["📝 Post Atualizado"] --> B["🔌 Plugin"]
end
B -->|"PURGE /post/*"| C
subgraph NG["NGINX"]
C["🗑️ cache_purge"] --> D["✅ Página removida"]
end
E["👤 Visitante"] -->|"GET /post/"| NG
D --> F["Conteúdo fresco servido"]
style WP fill:#4a90d9,stroke:#2d5986,color:#fff
style NG fill:#009639,stroke:#006325,color:#fff
Dicas de Desempenho
-
Use Disco RAM para Cache Quente
Monte
/var/cache/nginxcomo tmpfs para leituras de cache o mais rápidas possívelmount -t tmpfs -o size=2G tmpfs /var/cache/nginx -
Normalize os Cabeçalhos de Compressão
Reduza as variantes de cache com o módulo compression-normalize
-
Ignorar Cache para Usuários Logados
proxy_cache_bypass $cookie_wordpress_logged_in;
Considerações de Segurança
A restrição from 127.0.0.1 é crítica:
proxy_cache_purge PURGE from 127.0.0.1;
Sem isso, qualquer um poderia purgar seu cache enviando requisições PURGE.
Para segurança adicional, você também pode:
# Permitir PURGE apenas de IPs específicos
proxy_cache_purge PURGE from 127.0.0.1 10.0.0.0/8;
# Ou exigir autenticação
# (não coberto neste guia)
Solução de Problemas
X-Cache-Status sempre mostra MISS
- Verifique se a diretiva proxy_cache está habilitada
- Verifique se o diretório de cache existe e é gravável pelo nginx
- Verifique se as regras de
proxy_cache_bypassnão estão sempre sendo acionadas
PURGE retorna 404
- Certifique-se de que a diretiva
proxy_cache_purgeestá no bloco de localização correto - Verifique se o módulo está carregado:
nginx -V 2>&1 | grep cache_purge
Diretório de cache enchendo
- Ajuste
max_sizeemproxy_cache_path - Reduza o tempo limite
inactive - Execute
nginx -s reloadpara acionar a limpeza do gerenciador de cache
Relacionados
-
Módulo cache-purge
Referência completa da diretiva
-
Módulo compression-normalize
Reduza variantes de cache
-
Guia de Cache FastCGI
Método de cache alternativo para PHP-FPM