Rocket-Nginx — это конфигурация Nginx для плагина кэширования WordPress WP Rocket. Это позволяет Nginx напрямую обслуживать ранее кэшированные файлы без вызова WordPress или какого-либо PHP. Он также добавляет заголовки для кэширования CSS, JS и мультимедиа, чтобы использовать кеш браузера за счет уменьшения количества запросов к вашему веб-серверу.
Вы можете спросить себя: «Насколько хороша эта конфигурация?».
Скажем так, сами WP Rocket используют его на своем сайте, чтобы сделать его еще быстрее!
Этот проект спонсируется SatelliteWP, службой поддержки WordPress, расположенной недалеко от Монреаля, Канада. Наши услуги предоставляются как на английском, так и на французском языке. SatelliteWP обеспечивает доступ к сайтам WordPress.
Конфигурация была создана Максимом Джобином (@maximejobin) и сейчас поддерживается SatelliteWP.
Поскольку целью конфигурации является непосредственное обслуживание кэшированных файлов без необходимости выполнения какого-либо PHP из WordPress, это может привести к тому, что ваши запланированные задания не будут вызываться. Как вы, возможно, уже знаете, задания WP-Cron не являются настоящими заданиями cron и выполняются только тогда, когда вы посещаете ваш сайт.
Чтобы убедиться, что запланированные задачи выполняются в нужное время, настоятельно рекомендуется отключить задания cron WordPress и создать настоящее задание cron.
Чтобы отключить задание cron WordPress, добавьте следующую строку в ваш wp-config.php
:
define( 'DISABLE_WP_CRON', true );
Затем вручную запускайте задание cron каждые 15 минут (этого должно быть достаточно для большинства веб-сайтов):
*/15 * * * * wget -q -O - http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
или
*/15 * * * * curl http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
или
*/15 * * * * cd /home/user/public_html; php wp-cron.php &>/dev/null
Обязательно проверьте, что ваши задачи по-прежнему выполняются после этого изменения!
Чтобы использовать сценарий, вы должны включить его в свою фактическую конфигурацию. Если ваш веб-сайт WordPress еще не настроен для работы с Nginx, вы можете проверить конфигурацию Nginx в документации WordPress.
Для всех ваших веб-сайтов WordPress, использующих WP Rocket, необходим только один экземпляр Rocket-Nginx. Вы можете создать столько файлов конфигурации, сколько необходимо.
Вы можете создать папку rocket-nginx
в каталоге конфигурации Nginx. Если вы используете Ubuntu, ваша конфигурация Nginx (nginx.conf) должна находиться в: /etc/nginx/
.
Для установки вы можете:
cd /etc/nginx
git clone https://github.com/satellitewp/rocket-nginx.git
Начиная с версии 2.0, конфигурацию необходимо генерировать. Чтобы сгенерировать конфигурацию по умолчанию, необходимо переименовать отключенный ini-файл и запустить парсер конфигурации:
cd rocket-nginx
cp rocket-nginx.ini.disabled rocket-nginx.ini
php rocket-parser.php
Это создаст конфигурацию default.conf
, которую можно включить для всех веб-сайтов. Если вам нужно изменить конфигурацию по умолчанию, вы можете отредактировать INI-файл и добавить еще один раздел внизу файла.
Затем в файл конфигурации Nginx необходимо включить сгенерированную конфигурацию. Если конфигурации ваших веб-сайтов находятся в /etc/nginx/sites-available
, вам необходимо изменить конфигурацию:
server {
...
# Rocket-Nginx configuration
include rocket-nginx/conf.d/default.conf;
...
}
Прежде чем перезагрузить конфигурацию, обязательно протестируйте ее: nginx -t
После завершения теста вам необходимо перезагрузить конфигурацию. service nginx reload
Вот и все.
Никакой настройки делать не нужно. Это будет работать из коробки. Но кое-что можно отредактировать...
Просто откройте файл rocket-nginx.ini
и просмотрите все его параметры.
Вы можете добавить новый раздел на основе конфигурации по умолчанию следующим образом:
# 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"
После редактирования ini-файла вам необходимо заново создать файл конфигурации Nginx, запустив парсер:
php rocket-parser.php
Затем вновь добавленные или измененные разделы будут генерировать файл конфигурации обновления (*.conf).
Наконец, каждый раз, когда вы создаете (или восстанавливаете) файлы конфигурации, вам необходимо:
Проверьте его, чтобы убедиться, что он не выдал никаких ошибок:
nginx -t
Перезагрузите конфигурацию:
service nginx reload
Начиная с версии 3.0 создается папка conf.d
Для каждого создаваемого вами профиля внутри этой папки создается подпапка. В нем вы можете создавать файлы, которые будут включены в сгенерированный файл конфигурации.
Вы можете включать файлы конфигурации в разное время.
В профиле по умолчанию создайте файл в conf.d/default/
со следующим шаблоном имени файла: start.*.conf
.
В профиле по умолчанию создайте файл в conf.d/default/
со следующим шаблоном имени файла: global.*.conf
.
В профиле по умолчанию создайте файл в conf.d/default/
со следующим шаблоном имени файла: http.*.conf
.
В профиле по умолчанию создайте файл в conf.d/default/
со следующим шаблоном имени файла: preprocess.*.conf
.
В профиле по умолчанию создайте файл в conf.d/default/
со следующим шаблоном имени файла: css.*.conf
.
В профиле по умолчанию создайте файл в conf.d/default/
со следующим шаблоном имени файла: js.*.conf
.
В профиле по умолчанию создайте файл в conf.d/default/
со следующим шаблоном имени файла: media.*.conf
.
Возможно, вы захотите проверить, обслуживаются ли ваши файлы напрямую Nginx и не вызывают ли они какой-либо PHP. Для этого откройте файл rocket-nginx.ini
и измените значение отладки с:
debug = false
К:
debug = true
Следующий заголовок присутствует независимо от того, установлено ли для параметра debug значение true или false:
Причины не предоставления кэшированного файла:
Является ли Rocket-Nginx идеальным? Нет, это не так! Мы постарались сделать его максимально совершенным, но язык сценариев Nginx не предлагает всех возможностей, предлагаемых, например, таким языком, как PHP. Поэтому существуют некоторые ограничения.
Закодированные пули
Короткий ответ: Rocket-Nginx не может обслуживать закодированный пул.
Из-за ограничений сценариев Nginx такие фрагменты, как «جزازة العشب», кодируются, а файл сохраняется WP Rocket как «%d8%ac%d8%b2%d8%a7%d8%b2%d8%a9%20%d8%a7». %d9%84%d8%b9%d8%b4%d8%a8' (строчная буква). Некоторые браузеры, например Google Chrome, отправляют запрос как «%D8%AC%D8%B2%D8%A7%D8%B2%D8%A9%20%D8%A7%D9%84%D8%B9%D8%». B4%D8%A8' (прописные буквы). Используя такой язык, как PHP, было бы легко сравнить эти строки как равные. В Nginx это невозможно, если не требуется сторонний модуль (например, Perl или Lua). Чтобы сделать Rocket-Nginx максимально универсальным, было решено не добавлять зависимость модуля. Если вы хотите поддерживать закодированные фрагменты и добавить недостающий код, обратите внимание, что версия 3.1.0 (и более поздние) предлагает новую конфигурацию с именем «preprocess», позволяющую изменить регистр переменной $rocket_uri_path
(принудительно использовать нижний регистр).
WEBP-совместимость
Краткий ответ: Rocket-Nginx не будет обслуживать файлы кэширования WebP, созданные WP Rocket, если вы активируете функцию совместимости WebP.
WP Rocket может создать специальный кеш, если вы использовали инструмент для преобразования изображений (JPG, PNG, ...) в WebP. К сожалению, язык сценариев Nginx недостаточно мощный для правильного выполнения проверки. Следовательно, если вы активируете эту функцию, Rocket-Nginx позволит WP Rocket обрабатывать запрос и обслуживать нужную кешированную страницу, в зависимости от контекста.
Совместим ли Rocket-Nginx с BF Cache (кэш назад/вперед)?
Да! Если ваш веб-сайт не отображает конфиденциальные данные и хорошо подходит для обратного/прямого кэширования, вам необходимо отредактировать конфигурацию Rocket-Nginx, следуя обсуждению BF Cache в вопросах.
Как мне обновить версию 1 или 2 до версии 3?
Мы предлагаем вам сохранить предыдущую конфигурацию и начать все сначала. Воспользуйтесь этой возможностью, чтобы просмотреть все, так как многое изменилось. Официально версия 3.x не имеет обратной совместимости с предыдущими версиями. Начало работы с нуля не должно занимать более 15 минут.
Что нового в версии 3.x?
Много вещей!
Есть ли у вас какие-либо ориентиры по проекту?
Нет. Люди любят тесты так же сильно, как и ненавидят их. Во всех тестах есть люди, утверждающие, что X, Y или Z можно было бы сделать для улучшения результата. В этом проекте тест будет зависеть от того, сколько у вас плагинов, которые влияют на страницу, даже если выходные данные находятся в кеше (например, WP Rocket выполняет PHP, даже когда файл находится в кеше). Однако мы можем сказать, что вы перейдете от NGINX → PHP-FPM → WordPress (PHP и база данных) → Статический файл к NGINX → Статический файл . Другими словами, вы передаете статический файл непосредственно из NGINX вместо передачи запроса в FPM, а затем в PHP (по крайней мере, для WP Rocket...) перед обслуживанием статического файла.
Будет ли Rocket-Nginx работать, если мой сайт использует сертификат SSL (https)?
Да! Rocket-Nginx определит, был ли запрос сделан через HTTP или HTTPS, и предоставит правильный файл в зависимости от типа запроса. Оба протокола обрабатываются автоматически, начиная с версии 1.0.
Выпущено по лицензии MIT. Подробности смотрите в файле лицензии.