Rocket-Nginx é uma configuração Nginx para o plugin de cache WordPress WP Rocket. Ele permite que o Nginx sirva diretamente arquivos armazenados em cache anteriormente, sem chamar o WordPress ou qualquer PHP. Ele também adiciona cabeçalhos ao cache CSS, JS e mídias para aproveitar o cache do navegador, reduzindo a solicitação ao seu servidor web.
Você pode se perguntar: “Quão boa é esta configuração?”.
Digamos apenas que o próprio WP Rocket o utiliza em seu site para torná-lo ainda mais rápido!
Este projeto é patrocinado pela SatelliteWP, um serviço de manutenção WordPress localizado perto de Montreal, Canadá. Nosso serviço é oferecido em inglês e francês. SatelliteWP é uma fonte de sites WordPress.
A configuração foi criada por Maxime Jobin (@maximejobin) e agora é mantida pelo SatelliteWP.
Como o objetivo da configuração é servir arquivos em cache diretamente, sem a necessidade de executar nenhum PHP do WordPress, isso pode fazer com que seus trabalhos agendados não sejam chamados. Como você já deve saber, os trabalhos WP-Cron não são trabalhos cron reais e são executados apenas quando você tem visitas ao seu site.
Para garantir que suas tarefas agendadas sejam executadas quando deveriam, é altamente recomendável desabilitar os cron jobs do WordPress e criar um cron job real.
Para desabilitar o cron job do WordPress, adicione a seguinte linha ao seu wp-config.php
:
define( 'DISABLE_WP_CRON', true );
Em seguida, execute manualmente um cron job a cada 15 minutos (deve ser suficiente para a maioria dos sites):
*/15 * * * * wget -q -O - http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
ou
*/15 * * * * curl http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
ou
*/15 * * * * cd /home/user/public_html; php wp-cron.php &>/dev/null
Certifique-se de testar se suas tarefas ainda serão executadas após essa alteração!
Para usar o script, você deve incluí-lo em sua configuração real. Se o seu site WordPress ainda não estiver configurado para funcionar com Nginx, você pode verificar a configuração do Nginx para documentação do WordPress.
Apenas uma instância do Rocket-Nginx é necessária para todos os seus sites WordPress usando WP Rocket. Você pode gerar quantos arquivos de configuração forem necessários.
Você pode criar um diretório de pasta rocket-nginx
em seu diretório de configuração do Nginx. Se você estiver usando Ubuntu, sua configuração do Nginx (nginx.conf) deve ser encontrada em: /etc/nginx/
.
Para instalar, você pode:
cd /etc/nginx
git clone https://github.com/satellitewp/rocket-nginx.git
A partir da versão 2.0 a configuração deve ser gerada. Para gerar a configuração padrão, você deve renomear o arquivo ini desabilitado e executar o analisador de configuração:
cd rocket-nginx
cp rocket-nginx.ini.disabled rocket-nginx.ini
php rocket-parser.php
Isso irá gerar a configuração default.conf
que pode ser incluída para todos os sites. Se precisar alterar a configuração padrão, você pode editar o arquivo ini e adicionar outra seção na parte inferior do arquivo.
Então, no seu arquivo de configuração do Nginx, você deve incluir a configuração gerada. Se as configurações do seu site estiverem em /etc/nginx/sites-available
, você precisará alterar sua configuração:
server {
...
# Rocket-Nginx configuration
include rocket-nginx/conf.d/default.conf;
...
}
Antes de recarregar sua configuração, certifique-se de testá-la: nginx -t
Assim que o teste for concluído, você deverá recarregar sua configuração. service nginx reload
É isso.
Não há nenhuma configuração a fazer. Funcionará imediatamente. Mas você pode editar algumas coisas...
Basta abrir o arquivo rocket-nginx.ini
e ver todas as opções nele.
Você pode adicionar uma nova seção com base na configuração padrão como esta:
# This creates the new section and will generate a new configuration
[example.com : default]
# This will add a value to invalidate the cache with a cookie
cookie_invalidate[] = "my_custom_cookie"
Depois de editar o arquivo ini, você deve gerar novamente o arquivo de configuração do Nginx executando o analisador:
php rocket-parser.php
Em seguida, as seções recém-adicionadas ou modificadas gerarão o arquivo de configuração de atualização (*.conf).
Finalmente, cada vez que você gera (ou regenera) os arquivos de configuração, você deve:
Teste-o para ter certeza de que não produziu nenhum erro:
nginx -t
Recarregue a configuração:
service nginx reload
A partir da versão 3.0, uma pasta conf.d
é criada. Para cada perfil diferente criado, uma subpasta é criada dentro dessa pasta. Nele você pode criar arquivos que serão incluídos no arquivo de configuração gerado.
Você pode incluir arquivos de configuração em momentos diferentes.
No perfil padrão, crie um arquivo em conf.d/default/
com o seguinte padrão de nome de arquivo: start.*.conf
.
No perfil padrão, crie um arquivo em conf.d/default/
com o seguinte padrão de nome de arquivo: global.*.conf
.
No perfil padrão, crie um arquivo em conf.d/default/
com o seguinte padrão de nome de arquivo: http.*.conf
.
No perfil padrão, crie um arquivo em conf.d/default/
com o seguinte padrão de nome de arquivo: preprocess.*.conf
.
No perfil padrão, crie um arquivo em conf.d/default/
com o seguinte padrão de nome de arquivo: css.*.conf
.
No perfil padrão, crie um arquivo em conf.d/default/
com o seguinte padrão de nome de arquivo: js.*.conf
.
No perfil padrão, crie um arquivo em conf.d/default/
com o seguinte padrão de nome de arquivo: media.*.conf
.
Você pode querer verificar se seus arquivos são servidos diretamente pelo Nginx e não chamando nenhum PHP. Para fazer isso, abra o arquivo rocket-nginx.ini
e altere o valor de depuração de:
debug = false
Para:
debug = true
O cabeçalho a seguir está presente independentemente de a depuração estar definida como verdadeira ou falsa:
Razões para não servir um arquivo em cache:
O Rocket-Nginx é perfeito? Não, não é! Tentamos torná-lo o mais perfeito possível, mas a linguagem de script do Nginx não oferece todas as possibilidades oferecidas por uma linguagem como o PHP, por exemplo. Portanto, existem algumas limitações.
Slugs codificados
Resposta curta: Um slug codificado não pode ser servido pelo Rocket-Nginx.
Devido às limitações de script do Nginx, slugs como 'جزازة العشب' são codificados e o arquivo é armazenado pelo WP Rocket como '%d8%ac%d8%b2%d8%a7%d8%b2%d8%a9%20%d8%a7 %d9%84%d8%b9%d8%b4%d8%a8' (minúsculas). Alguns navegadores, como o Google Chrome, enviarão a solicitação como '%D8%AC%D8%B2%D8%A7%D8%B2%D8%A9%20%D8%A7%D9%84%D8%B9%D8% B4%D8%A8' (maiúsculas). Usando uma linguagem como PHP, seria fácil comparar essas strings como iguais. Com o Nginx, isso não é possível, a menos que seja necessário um módulo de terceiros (como Perl ou Lua). Para tornar o Rocket-Nginx o mais genérico possível, foi decidido não adicionar uma dependência de módulo. Se você deseja suportar slugs codificados e adicionar o código ausente, observe que a versão 3.1.0 (e posterior) oferece uma nova configuração chamada "pré-processo" para modificar a variável $rocket_uri_path
case (forçar letras minúsculas).
Compatibilidade WEBP
Resposta curta: Rocket-Nginx não servirá os arquivos de cache WebP gerados pelo WP Rocket se você ativar o recurso de compatibilidade WebP.
WP Rocket é capaz de criar um cache específico se você usar uma ferramenta para converter suas imagens (JPG, PNG, ...) para WebP. Infelizmente, a linguagem de script do Nginx não é poderosa o suficiente para realizar a validação corretamente. Portanto, se você ativar esse recurso, o Rocket-Nginx permitirá que o WP Rocket lide com a solicitação e forneça a página em cache correta, dependendo do contexto.
O Rocket-Nginx é compatível com BF Cache (back/forward cache)?
Sim! Se o seu site não exibe dados confidenciais e é uma boa opção para cache Back/Forward, você deve editar sua configuração Rocket-Nginx seguindo a discussão do BF Cache nas edições.
Como faço para atualizar da versão 1 ou 2 para a versão 3?
Sugerimos que você salve sua configuração anterior e reinicie. Aproveite esta oportunidade para rever tudo, pois muitas coisas mudaram. Oficialmente, a versão 3.x não é compatível com versões anteriores. Começar do zero não deve demorar mais de 15 minutos.
O que há de novo na versão 3.x?
Muitas coisas!
Você tem alguma referência sobre o projeto?
Não. As pessoas amam os benchmarks tanto quanto os odeiam. Todos os benchmarks têm pessoas afirmando que X, Y ou Z poderiam ter sido feitos para melhorar o resultado. Neste projeto, o benchmark dependeria de quantos plugins você possui que estão afetando a página mesmo se a saída estiver em cache (por exemplo, WP Rocket executa PHP mesmo quando um arquivo está em cache). O que podemos dizer é que você irá de NGINX → PHP-FPM → WordPress (PHP e banco de dados) → Arquivo estático para NGINX → Arquivo estático . Em outras palavras, você está servindo o arquivo estático diretamente do NGINX em vez de passar a solicitação para o FPM e depois para o PHP (para WP Rocket... pelo menos) antes de servir o arquivo estático.
O Rocket-Nginx funcionará se meu site usar um certificado SSL (https)?
Sim! Rocket-Nginx detectará se a solicitação foi feita via HTTP ou HTTPS e fornecerá o arquivo correto dependendo do tipo de solicitação. Ambos os protocolos são tratados automaticamente desde a versão 1.0.
Lançado sob a licença MIT. Consulte o arquivo de licença para obter detalhes.