Como corrigir o erro Rocket-Nginx Not Working no WordPress
O que é Rocket-Nginx Not Working?
O Rocket-Nginx not working e a falha em que o complemento Rocket-Nginx para de entregar o HTML em cache do WP Rocket diretamente pelo servidor web. O Rocket-Nginx e uma configuração de Nginx, mantida pela SatelliteWP, que serve o arquivo estático gerado pelo WP Rocket antes mesmo do PHP ser carregado. Quando funciona, o Nginx responde com o cabeçalho X-Rocket-Nginx-Serving-Static igual a HIT e a página e devolvida sem passar pelo WordPress. Quando para de funcionar, toda requisicao volta a acionar o PHP e o ganho de velocidade do cache servido pelo servidor desaparece.
Na prática o sintoma e o cabeçalho X-Rocket-Nginx-Serving-Static respondendo MISS ou BYPASS em páginas que deveriam estar em cache, ou a ausencia total dos cabeçalhos X-Rocket-Nginx. Segundo a documentação oficial do projeto, o fluxo correto exige renomear o rocket-nginx.ini.disabled para rocket-nginx.ini, rodar o rocket-parser.php para gerar o default.conf, incluir esse arquivo no server block do Nginx e recarregar o serviço. Pular qualquer uma dessas etapas, ou esquecer de regenerar a configuração após editar o .ini, derruba a entrega do cache pelo Nginx.
Como identificar
- O cabeçalho de resposta ‘X-Rocket-Nginx-Serving-Static: MISS’ ou ‘X-Rocket-Nginx-Serving-Static: BYPASS’ aparece em páginas que já deveriam estar em cache.
- Nenhum cabeçalho ‘X-Rocket-Nginx-…’ aparece na resposta, indicando que o include do default.conf não esta ativo no server block.
- O comando ‘nginx -t’ retorna erro de sintaxe apontando para a linha do include do Rocket-Nginx, e o reload falha.
- O cabeçalho ‘X-Rocket-Nginx-Reason’ traz um motivo como cookie, query string ou método POST, mostrando que a requisicao caiu numa regra de bypass.
- O site continua lento mesmo com o cache do WP Rocket gerado, porque toda requisicao volta a carregar o PHP em vez de servir o arquivo estático.
Como prevenir
- Versione o rocket-nginx.ini junto com a configuração do servidor e rode o rocket-parser.php no deploy, para que o default.conf nunca fique defasado em relacao ao .ini.
- Após qualquer mudanca no Nginx, padronize a sequencia nginx -t seguido de service nginx reload, evitando aplicar configuração com sintaxe invalida.
- Monitore o cabeçalho X-Rocket-Nginx-Serving-Static em páginas chave depois de cada deploy ou atualização do WP Rocket, para detectar uma queda de HIT para MISS logo que acontece.
- Documente o caminho real do cache do WP Rocket (wp-content/cache/wp-rocket) e mantenha ele igual ao configurado no rocket-nginx.ini, para não gerar MISS por divergencia de diretório.
Causa
- O arquivo default.conf gerado pelo rocket-parser.php não foi incluido no server block do Nginx com a diretiva 'include rocket-nginx/conf.d/default.conf;', entao o Nginx nunca tenta servir o cache antes do PHP.
- O rocket-nginx.ini ainda esta como rocket-nginx.ini.disabled, ou foi editado mas o rocket-parser.php não foi executado de novo, deixando o default.conf desatualizado ou inexistente.
- A requisicao casa com uma condicao de bypass documentada pelo Rocket-Nginx (método POST, query string na URL, presenca do arquivo .maintenance ou um cookie de exclusão), fazendo o cabeçalho X-Rocket-Nginx-Serving-Static responder BYPASS.
- O caminho de cache configurado no rocket-nginx.ini não bate com o diretório real onde o WP Rocket grava o cache (wp-content/cache/wp-rocket), entao o Nginx procura o arquivo estático, não encontra e responde MISS.
- O nginx -t passou mas o serviço não foi recarregado com 'service nginx reload' após a mudanca, entao a configuração nova com o include do Rocket-Nginx ainda não esta em vigor no processo do Nginx.
Como resolver
- Confirme o cabeçalho que o Nginx esta devolvendo: Antes de mexer em qualquer arquivo, descubra em que estado o Rocket-Nginx esta. Inspecione os cabeçalhos de resposta de uma página pública que deveria estar em cache e leia o valor de X-Rocket-Nginx-Serving-Static. HIT significa que esta servindo do disco, MISS que não achou o arquivo, BYPASS que uma regra excluiu a página, e a ausencia total do cabeçalho indica que o include nem esta ativo.
curl -I https://seusite.com.br/ Procure na resposta a linha X-Rocket-Nginx-Serving-Static Leia também X-Rocket-Nginx-Reason se o valor for MISS ou BYPASS - Gere a configuração com o rocket-parser.php: Na pasta do Rocket-Nginx, garanta que o arquivo de configuração esteja ativo e regenere o default.conf. O rocket-nginx.ini.disabled precisa ser copiado para rocket-nginx.ini, e o parser precisa rodar para transformar o .ini no arquivo .conf que o Nginx vai incluir. Sempre que editar o .ini, rode o parser de novo.
cp rocket-nginx.ini.disabled rocket-nginx.ini php rocket-parser.php Confirme que o arquivo rocket-nginx/conf.d/default.conf foi criado - Inclua o default.conf no server block do Nginx: Edite o arquivo de configuração do site no Nginx e adicione a diretiva include dentro do bloco server, apontando para o default.conf gerado pelo parser. Sem esse include, o Nginx nunca executa as regras do Rocket-Nginx e nenhum cabeçalho X-Rocket-Nginx aparece na resposta.
Abra o arquivo do site em /etc/nginx/sites-available/ - Dentro do bloco server { ... } adicione:
include rocket-nginx/conf.d/default.conf; - Teste a sintaxe e recarregue o Nginx: Valide a configuração com nginx -t antes de aplicar. Se o teste apontar erro na linha do include, corrija o caminho do default.conf. Com o teste OK, recarregue o serviço para que a configuração nova entre em vigor sem derrubar as conexoes ativas.
nginx -t service nginx reload - Valide o HIT e investigue bypass residual: Repita a inspecao do passo 1 numa página em cache. O esperado agora e X-Rocket-Nginx-Serving-Static igual a HIT. Se ainda vier MISS, confira se o caminho de cache no rocket-nginx.ini bate com wp-content/cache/wp-rocket. Se vier BYPASS, leia o X-Rocket-Nginx-Reason: ele aponta a regra que excluiu a página, como query string, cookie ou método POST.
curl -I https://seusite.com.br/ Confirme X-Rocket-Nginx-Serving-Static: HIT Se MISS ou BYPASS, leia X-Rocket-Nginx-Reason e ajuste o caminho de cache ou a regra no rocket-nginx.ini
# /etc/nginx/sites-available/seusite.conf
server {
listen 443 ssl;
server_name seusite.com.br;
root /var/www/seusite/htdocs;
# Inclui as regras geradas pelo rocket-parser.php.
# Sem este include o Nginx nunca serve o cache do WP Rocket.
include rocket-nginx/conf.d/default.conf;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}














