Rocket-Nginx es una configuración de Nginx para el complemento de caché de WordPress WP Rocket. Permite a Nginx servir directamente archivos previamente almacenados en caché sin llamar a WordPress ni a PHP. También agrega encabezados al caché CSS, JS y medios para aprovechar el caché del navegador al reducir la solicitud a su servidor web.
Quizás te preguntes: "¿Qué tan buena es esta configuración?".
¡Digamos que los propios WP Rocket lo usan en su sitio web para hacerlo aún más rápido!
Este proyecto está patrocinado por SatelliteWP, un servicio de mantenimiento de WordPress ubicado cerca de Montreal, Canadá. Nuestro servicio se ofrece tanto en inglés como en francés. SatelliteWP permite entretener sitios WordPress.
La configuración fue creada por Maxime Jobin (@maximejobin) y ahora es mantenida por SatelliteWP.
Como el objetivo de la configuración es servir archivos en caché directamente sin tener que ejecutar PHP desde WordPress, esto puede provocar que no se llamen a sus trabajos programados. Como ya sabrá, los trabajos de WP-Cron no son trabajos cron reales y se ejecutan solo cuando tiene visitas a su sitio.
Para asegurarse de que sus tareas programadas se ejecuten cuando deberían, se recomienda encarecidamente deshabilitar los trabajos cron de WordPress y crear un trabajo cron real.
Para deshabilitar el trabajo cron de WordPress, agregue la siguiente línea a su wp-config.php
:
define( 'DISABLE_WP_CRON', true );
Luego, realice manualmente una tarea cron cada 15 minutos (debería ser suficiente para la mayoría de los sitios web):
*/15 * * * * wget -q -O - http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
o
*/15 * * * * curl http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
o
*/15 * * * * cd /home/user/public_html; php wp-cron.php &>/dev/null
¡Asegúrate de probar que tus tareas aún se ejecutan después de este cambio!
Para utilizar el script, debe incluirlo en su configuración real. Si su sitio web de WordPress aún no está configurado para ejecutarse con Nginx, puede consultar la configuración de Nginx para obtener la documentación de WordPress.
Solo se necesita una instancia de Rocket-Nginx para todos sus sitios web de WordPress que utilizan WP Rocket. Puede generar tantos archivos de configuración como necesite.
Puede crear una carpeta en el directorio rocket-nginx
en su directorio de configuración de Nginx. Si está utilizando Ubuntu, su configuración de Nginx (nginx.conf) debe encontrarse en: /etc/nginx/
.
Para instalar, puedes:
cd /etc/nginx
git clone https://github.com/satellitewp/rocket-nginx.git
A partir de la versión 2.0 se debe generar la configuración. Para generar la configuración predeterminada, debe cambiar el nombre del archivo ini deshabilitado y ejecutar el analizador de configuración:
cd rocket-nginx
cp rocket-nginx.ini.disabled rocket-nginx.ini
php rocket-parser.php
Esto generará la configuración default.conf
que se puede incluir para todos los sitios web. Si necesita modificar la configuración predeterminada, puede editar el archivo ini y agregar otra sección al final del archivo.
Luego, en su archivo de configuración de Nginx, debe incluir la configuración generada. Si las configuraciones de su sitio web están en /etc/nginx/sites-available
, debe modificar su configuración:
server {
...
# Rocket-Nginx configuration
include rocket-nginx/conf.d/default.conf;
...
}
Antes de recargar su configuración, asegúrese de probarla: nginx -t
Una vez realizada la prueba, debe volver a cargar su configuración. service nginx reload
Eso es todo.
No hay ninguna configuración que hacer. Funcionará desde el primer momento. Pero puedes editar un par de cosas...
Simplemente abra el archivo rocket-nginx.ini
y vea todas las opciones que contiene.
Puede agregar una nueva sección basada en la configuración predeterminada 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"
Una vez que edite el archivo ini, debe regenerar su archivo de configuración de Nginx ejecutando el analizador:
php rocket-parser.php
Luego, las secciones recién agregadas o modificadas generarán un archivo de configuración de actualización (*.conf).
Finalmente, cada vez que generes (o regeneres) los archivos de configuración, debes:
Pruébelo para asegurarse de que no produjo ningún error:
nginx -t
Vuelva a cargar la configuración:
service nginx reload
A partir de la versión 3.0, se crea una carpeta conf.d
Para cada perfil diferente que cree, se crea una subcarpeta dentro de esa carpeta. En él, puede crear archivos que se incluirán dentro del archivo de configuración generado.
Puede incluir archivos de configuración en diferentes momentos.
En el perfil predeterminado, cree un archivo en conf.d/default/
que tenga el siguiente patrón de nombre de archivo: start.*.conf
.
En el perfil predeterminado, cree un archivo en conf.d/default/
que tenga el siguiente patrón de nombre de archivo: global.*.conf
.
En el perfil predeterminado, cree un archivo en conf.d/default/
que tenga el siguiente patrón de nombre de archivo: http.*.conf
.
En el perfil predeterminado, cree un archivo en conf.d/default/
que tenga el siguiente patrón de nombre de archivo: preprocess.*.conf
.
En el perfil predeterminado, cree un archivo en conf.d/default/
que tenga el siguiente patrón de nombre de archivo: css.*.conf
.
En el perfil predeterminado, cree un archivo en conf.d/default/
que tenga el siguiente patrón de nombre de archivo: js.*.conf
.
En el perfil predeterminado, cree un archivo en conf.d/default/
que tenga el siguiente patrón de nombre de archivo: media.*.conf
.
Es posible que desees comprobar si Nginx entrega tus archivos directamente y no llama a ningún PHP. Para hacer eso, abra el archivo rocket-nginx.ini
y cambie el valor de depuración de:
debug = false
A:
debug = true
El siguiente encabezado está presente sin importar si la depuración está configurada como verdadera o falsa:
Razones para no entregar un archivo en caché:
¿Rocket-Nginx es perfecto? ¡No, no lo es! Intentamos hacerlo lo más perfecto posible, pero el lenguaje de programación de Nginx no ofrece todas las posibilidades que ofrece un lenguaje como PHP, por ejemplo. Por tanto, existen algunas limitaciones.
Babosas codificadas
Respuesta corta: Rocket-Nginx no puede servir un slug codificado.
Debido a las limitaciones de secuencias de comandos de Nginx, slugs como 'جزازة العشب' están codificados y WP Rocket almacena el archivo como '%d8%ac%d8%b2%d8%a7%d8%b2%d8%a9%20%d8%a7 %d9%84%d8%b9%d8%b4%d8%a8' (minúscula). Algunos navegadores, como Google Chrome, enviarán la solicitud como '%D8%AC%D8%B2%D8%A7%D8%B2%D8%A9%20%D8%A7%D9%84%D8%B9%D8% B4%D8%A8' (mayúscula). Usando un lenguaje como PHP, sería fácil comparar estas cadenas como iguales. Con Nginx, esto no es posible a menos que se necesite un módulo de terceros (como Perl o Lua). Para que Rocket-Nginx sea lo más genérico posible, se decidió no agregar una dependencia de módulo. Si desea admitir slugs codificados y agregar el código que falta, tenga en cuenta que la versión 3.1.0 (y posteriores) ofrece una nueva configuración incluida denominada "preproceso" para modificar la variable $rocket_uri_path
en mayúsculas (forzar minúsculas).
Compatibilidad WEBP
Respuesta corta: Rocket-Nginx no servirá los archivos de almacenamiento en caché de WebP generados por WP Rocket si activa la función de compatibilidad con WebP.
WP Rocket puede crear un caché específico si utilizó una herramienta para convertir sus imágenes (JPG, PNG, ...) a WebP. Desafortunadamente, el lenguaje de programación de Nginx no es lo suficientemente potente como para lograr la validación correctamente. Por lo tanto, si activa esta función, Rocket-Nginx permitirá que WP Rocket maneje la solicitud y proporcione la página en caché correcta, según el contexto.
¿Rocket-Nginx es compatible con BF Cache (caché hacia atrás/adelante)?
¡Sí! Si su sitio web no muestra datos confidenciales y es una buena opción para el almacenamiento en caché hacia adelante/atrás, debe editar su configuración de Rocket-Nginx siguiendo la discusión sobre BF Cache en los problemas.
¿Cómo actualizo de la versión 1 o 2 a la versión 3?
Le sugerimos que guarde su configuración anterior y comience de nuevo. Aprovecha esta oportunidad para revisar todo ya que muchas cosas han cambiado. Oficialmente, la versión 3.x no es compatible con versiones anteriores. Empezar desde cero no debería llevarte más de 15 minutos.
¿Qué hay de nuevo en la versión 3.x?
¡Muchas cosas!
¿Tiene algún punto de referencia sobre el proyecto?
No. La gente ama los benchmarks tanto como los odia. En todos los puntos de referencia hay personas que afirman que se podrían haber hecho X, Y o Z para mejorar el resultado. En este proyecto, el punto de referencia dependerá de cuántos complementos tenga que afecten a la página incluso si la salida está en la caché (por ejemplo, WP Rocket ejecuta PHP incluso cuando un archivo está en la caché). Sin embargo, lo que podemos decir es que pasará de NGINX → PHP-FPM → WordPress (PHP y base de datos) → Archivo estático a NGINX → Archivo estático . En otras palabras, está entregando el archivo estático directamente desde NGINX en lugar de pasar la solicitud a FPM y luego a PHP (para WP Rocket... al menos) antes de entregar el archivo estático.
¿Funcionará Rocket-Nginx si mi sitio web utiliza un certificado SSL (https)?
¡Sí! Rocket-Nginx detectará si la solicitud se realizó a través de HTTP o HTTPS y entregará el archivo correcto según el tipo de solicitud. Ambos protocolos se manejan automáticamente desde la versión 1.0.
Publicado bajo la licencia MIT. Consulte el archivo de licencia para obtener más detalles.