Rocket-Nginx ist eine Nginx-Konfiguration für das WordPress-Cache-Plugin WP Rocket. Es ermöglicht Nginx, zuvor zwischengespeicherte Dateien direkt bereitzustellen, ohne WordPress oder PHP aufzurufen. Es fügt außerdem Header zum Cache von CSS, JS und Medien hinzu, um den Cache des Browsers zu nutzen und die Anforderungen an Ihren Webserver zu reduzieren.
Sie fragen sich vielleicht: „Wie gut ist diese Konfiguration?“
Sagen wir einfach, dass WP Rocket es selbst auf seiner Website verwendet, um sie noch schneller zu machen!
Dieses Projekt wird von SatelliteWP gesponsert, einem WordPress-Wartungsdienst mit Sitz in der Nähe von Montreal, Kanada. Unser Service wird sowohl auf Englisch als auch auf Französisch angeboten. SatelliteWP ist ein WordPress-Website-Entrepreneur.
Die Konfiguration wurde von Maxime Jobin (@maximejobin) erstellt und wird jetzt von SatelliteWP gepflegt.
Da das Ziel der Konfiguration darin besteht, zwischengespeicherte Dateien direkt bereitzustellen, ohne dass PHP von WordPress ausgeführt werden muss, kann dies dazu führen, dass Ihre geplanten Jobs nicht aufgerufen werden. Wie Sie vielleicht bereits wissen, sind WP-Cron-Jobs keine echten Cron-Jobs und werden nur ausgeführt, wenn Sie Besuche auf Ihrer Website haben.
Um sicherzustellen, dass Ihre geplanten Aufgaben ordnungsgemäß ausgeführt werden, wird dringend empfohlen, WordPress-Cronjobs zu deaktivieren und einen echten Cronjob zu erstellen.
Um den WordPress-Cronjob zu deaktivieren, fügen Sie die folgende Zeile zu Ihrer wp-config.php
hinzu:
define( 'DISABLE_WP_CRON', true );
Führen Sie dann alle 15 Minuten manuell einen Cron-Job aus (dies sollte für die meisten Websites ausreichen):
*/15 * * * * wget -q -O - http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
oder
*/15 * * * * curl http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
oder
*/15 * * * * cd /home/user/public_html; php wp-cron.php &>/dev/null
Stellen Sie sicher, dass Sie testen, ob Ihre Aufgaben nach dieser Änderung noch ausgeführt werden!
Um das Skript verwenden zu können, müssen Sie es in Ihre tatsächliche Konfiguration einbinden. Wenn Ihre WordPress-Website noch nicht für die Ausführung mit Nginx konfiguriert ist, können Sie die Nginx-Konfiguration in der WordPress-Dokumentation überprüfen.
Für alle Ihre WordPress-Websites mit WP Rocket ist nur eine Instanz von Rocket-Nginx erforderlich. Sie können beliebig viele Konfigurationsdateien generieren.
Sie können in Ihrem Nginx-Konfigurationsverzeichnis einen Ordner rocket-nginx
erstellen. Wenn Sie Ubuntu verwenden, sollte Ihre Nginx-Konfiguration (nginx.conf) unter /etc/nginx/
zu finden sein.
Zur Installation können Sie:
cd /etc/nginx
git clone https://github.com/satellitewp/rocket-nginx.git
Ab Version 2.0 muss die Konfiguration generiert werden. Um die Standardkonfiguration zu generieren, müssen Sie die deaktivierte INI-Datei umbenennen und den Konfigurationsparser ausführen:
cd rocket-nginx
cp rocket-nginx.ini.disabled rocket-nginx.ini
php rocket-parser.php
Dadurch wird die default.conf
-Konfiguration generiert, die für alle Websites eingebunden werden kann. Wenn Sie die Standardkonfiguration ändern müssen, können Sie die INI-Datei bearbeiten und am Ende der Datei einen weiteren Abschnitt hinzufügen.
Anschließend müssen Sie die generierte Konfiguration in Ihre Nginx-Konfigurationsdatei aufnehmen. Wenn sich Ihre Website-Konfigurationen in /etc/nginx/sites-available
befinden, müssen Sie Ihre Konfiguration ändern:
server {
...
# Rocket-Nginx configuration
include rocket-nginx/conf.d/default.conf;
...
}
Bevor Sie Ihre Konfiguration neu laden, stellen Sie sicher, dass Sie sie testen: nginx -t
Sobald Ihr Test abgeschlossen ist, müssen Sie Ihre Konfiguration neu laden. service nginx reload
Das ist es.
Es ist keine Konfiguration erforderlich. Es wird sofort funktionieren. Aber Sie können ein paar Dinge bearbeiten ...
Öffnen Sie einfach die Datei rocket-nginx.ini
und sehen Sie sich alle darin enthaltenen Optionen an.
Sie können einen neuen Abschnitt basierend auf der Standardkonfiguration wie folgt hinzufügen:
# 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"
Sobald Sie die INI-Datei bearbeitet haben, müssen Sie Ihre Nginx-Konfigurationsdatei neu generieren, indem Sie den Parser ausführen:
php rocket-parser.php
Anschließend generieren neu hinzugefügte oder geänderte Abschnitte eine Aktualisierungskonfigurationsdatei (*.conf).
Schließlich müssen Sie jedes Mal , wenn Sie die Konfigurationsdateien generieren (oder neu generieren), Folgendes tun:
Testen Sie es, um sicherzustellen, dass kein Fehler aufgetreten ist:
nginx -t
Laden Sie die Konfiguration neu:
service nginx reload
Ab Version 3.0 wird ein Ordner conf.d
erstellt. Für jedes unterschiedliche Profil, das Sie erstellen, wird in diesem Ordner ein Unterordner erstellt. Darin können Sie Dateien erstellen, die in die generierte Konfigurationsdatei eingebunden werden.
Sie können Konfigurationsdateien zu unterschiedlichen Zeitpunkten einbinden.
Erstellen Sie im Standardprofil eine Datei in conf.d/default/
mit dem folgenden Dateinamenmuster: start.*.conf
.
Erstellen Sie im Standardprofil eine Datei in conf.d/default/
mit dem folgenden Dateinamenmuster: global.*.conf
.
Erstellen Sie im Standardprofil eine Datei in conf.d/default/
mit dem folgenden Dateinamenmuster: http.*.conf
.
Erstellen Sie im Standardprofil eine Datei in conf.d/default/
mit dem folgenden Dateinamenmuster: preprocess.*.conf
.
Erstellen Sie im Standardprofil eine Datei in conf.d/default/
mit dem folgenden Dateinamenmuster: css.*.conf
.
Erstellen Sie im Standardprofil eine Datei in conf.d/default/
mit dem folgenden Dateinamenmuster: js.*.conf
.
Erstellen Sie im Standardprofil eine Datei in conf.d/default/
mit dem folgenden Dateinamenmuster: media.*.conf
.
Möglicherweise möchten Sie überprüfen, ob Ihre Dateien direkt von Nginx bereitgestellt werden und kein PHP aufrufen. Öffnen Sie dazu die Datei rocket-nginx.ini
und ändern Sie den Debug-Wert von:
debug = false
Zu:
debug = true
Der folgende Header ist vorhanden, unabhängig davon, ob debug auf true oder false gesetzt ist:
Gründe dafür, dass eine zwischengespeicherte Datei nicht bereitgestellt wird:
Ist Rocket-Nginx perfekt? Nein, ist es nicht! Wir haben versucht, es so perfekt wie möglich zu machen, aber die Skriptsprache von Nginx bietet nicht alle Möglichkeiten, die beispielsweise eine Sprache wie PHP bietet. Daher gibt es einige Einschränkungen.
Verschlüsselte Schnecken
Kurze Antwort: Ein codierter Slug kann von Rocket-Nginx nicht bedient werden.
Aufgrund der Skripteinschränkungen von Nginx werden Slugs wie „جزازة العشب“ codiert und die Datei wird von WP Rocket als „%d8%ac%d8%b2%d8%a7%d8%b2%d8%a9%20%d8%a7“ gespeichert %d9%84%d8%b9%d8%b4%d8%a8' (Kleinbuchstaben). Einige Browser, wie Google Chrome, senden die Anfrage als „%D8%AC%D8%B2%D8%A7%D8%B2%D8%A9%20%D8%A7%D9%84%D8%B9%D8%“ B4%D8%A8' (Großbuchstaben). Mit einer Sprache wie PHP wäre es einfach, diese Zeichenfolgen als gleich zu vergleichen. Mit Nginx ist dies nicht möglich, es sei denn, es wird ein Modul eines Drittanbieters (wie Perl oder Lua) benötigt. Um Rocket-Nginx so generisch wie möglich zu gestalten, wurde beschlossen, keine Modulabhängigkeit hinzuzufügen. Wenn Sie codierte Slugs unterstützen und den fehlenden Code hinzufügen möchten, beachten Sie, dass Version 3.1.0 (und höher) ein neues Konfigurations-Include mit dem Namen „preprocess“ bietet, um die Groß- und Kleinschreibung der Variablen $rocket_uri_path
zu ändern (Kleinschreibung erzwingen).
WEBP-Kompatibilität
Kurze Antwort: Rocket-Nginx stellt die von WP Rocket generierten WebP-Caching-Dateien nicht bereit, wenn Sie die WebP-Kompatibilitätsfunktion aktivieren.
WP Rocket kann einen bestimmten Cache erstellen, wenn Sie ein Tool zum Konvertieren Ihrer Bilder (JPG, PNG, ...) in WebP verwendet haben. Leider ist die Skriptsprache von Nginx nicht leistungsfähig genug, um die Validierung korrekt durchzuführen. Wenn Sie diese Funktion aktivieren, lässt Rocket-Nginx daher WP Rocket die Anfrage verarbeiten und je nach Kontext die richtige zwischengespeicherte Seite bereitstellen.
Ist Rocket-Nginx mit BF Cache (Back/Forward-Cache) kompatibel?
Ja! Wenn Ihre Website keine sensiblen Daten anzeigt und sich gut für Back-/Forward-Caching eignet, müssen Sie Ihre Rocket-Nginx-Konfiguration bearbeiten, indem Sie der BF-Cache-Diskussion in den Problemen folgen.
Wie aktualisiere ich von Version 1 oder 2 auf Version 3?
Wir empfehlen Ihnen, Ihre vorherige Konfiguration zu speichern und von vorne zu beginnen. Nutzen Sie diese Gelegenheit, um alles noch einmal Revue passieren zu lassen, da sich viele Dinge geändert haben. Offiziell ist Version 3.x nicht abwärtskompatibel mit früheren Versionen. Der Neuanfang sollte nicht länger als 15 Minuten dauern.
Was ist neu in Version 3.x?
Viele Dinge!
Haben Sie einen Benchmark zum Projekt?
Nein. Die Leute lieben Benchmarks genauso sehr wie sie sie hassen. Bei allen Benchmarks wird behauptet, dass X, Y oder Z hätten getan werden können, um das Ergebnis zu verbessern. In diesem Projekt würde der Benchmark davon abhängen, wie viele Plugins Sie haben, die sich auf die Seite auswirken, selbst wenn sich die Ausgabe im Cache befindet (z. B. führt WP Rocket PHP aus, auch wenn sich eine Datei im Cache befindet). Was wir jedoch sagen können ist, dass Sie von NGINX → PHP-FPM → WordPress (PHP und Datenbank) → Statische Datei zu NGINX → Statische Datei wechseln werden. Mit anderen Worten: Sie stellen die statische Datei direkt von NGINX aus bereit, anstatt die Anfrage zunächst an FPM und dann an PHP (zumindest für WP Rocket) weiterzuleiten, bevor Sie die statische Datei bereitstellen.
Funktioniert Rocket-Nginx, wenn meine Website ein SSL-Zertifikat (https) verwendet?
Ja! Rocket-Nginx erkennt, ob die Anfrage über HTTP oder HTTPS gestellt wurde und stellt je nach Anfragetyp die richtige Datei bereit. Beide Protokolle werden seit Version 1.0 automatisch verarbeitet.
Veröffentlicht unter der MIT-Lizenz. Einzelheiten finden Sie in der Lizenzdatei.