Rocket-Nginx adalah konfigurasi Nginx untuk plugin cache WordPress WP Rocket. Ini memungkinkan Nginx untuk menyajikan secara langsung file yang di-cache sebelumnya tanpa memanggil WordPress atau PHP apa pun. Itu juga menambahkan header ke cache CSS, JS dan media untuk memanfaatkan cache browser dengan mengurangi permintaan ke server web Anda.
Anda mungkin bertanya pada diri sendiri: "Seberapa bagus konfigurasi ini?".
Anggap saja WP Rocket sendiri menggunakannya di situs web mereka untuk membuatnya lebih cepat!
Proyek ini disponsori oleh SatelliteWP, layanan pemeliharaan WordPress yang berlokasi dekat Montreal, Kanada. Layanan kami ditawarkan dalam bahasa Inggris dan Perancis. SatelliteWP merupakan bagian dari situs WordPress.
Konfigurasi ini dibuat oleh Maxime Jobin (@maximejobin) dan sekarang dikelola oleh SatelliteWP.
Karena tujuan konfigurasinya adalah untuk menyajikan file cache secara langsung tanpa harus menjalankan PHP apa pun dari WordPress, hal ini dapat menyebabkan pekerjaan terjadwal Anda tidak dapat dipanggil. Seperti yang mungkin sudah Anda ketahui, pekerjaan WP-Cron bukanlah pekerjaan cron yang sebenarnya dan dijalankan hanya ketika Anda memiliki kunjungan ke situs Anda.
Untuk memastikan tugas terjadwal Anda berjalan sebagaimana mestinya, sangat disarankan untuk menonaktifkan pekerjaan cron WordPress dan membuat pekerjaan cron yang sebenarnya.
Untuk menonaktifkan pekerjaan cron WordPress, tambahkan baris berikut ke wp-config.php
Anda:
define( 'DISABLE_WP_CRON', true );
Kemudian, lakukan tugas cron secara manual setiap 15 menit (ini sudah cukup untuk sebagian besar situs web):
*/15 * * * * wget -q -O - http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
atau
*/15 * * * * curl http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
atau
*/15 * * * * cd /home/user/public_html; php wp-cron.php &>/dev/null
Pastikan Anda menguji apakah tugas Anda masih berjalan setelah perubahan ini!
Untuk menggunakan skrip, Anda harus memasukkannya ke dalam konfigurasi Anda yang sebenarnya. Jika situs WordPress Anda belum dikonfigurasi untuk dijalankan dengan Nginx, Anda dapat memeriksa konfigurasi Nginx untuk dokumentasi WordPress.
Hanya satu contoh Rocket-Nginx yang diperlukan untuk semua situs WordPress Anda menggunakan WP Rocket. Anda dapat membuat file konfigurasi sebanyak yang diperlukan.
Anda dapat membuat folder direktori rocket-nginx
di direktori konfigurasi Nginx Anda. Jika Anda menggunakan Ubuntu, konfigurasi Nginx Anda (nginx.conf) dapat ditemukan di: /etc/nginx/
.
Untuk menginstal, Anda dapat:
cd /etc/nginx
git clone https://github.com/satellitewp/rocket-nginx.git
Sejak versi 2.0, konfigurasi harus dibuat. Untuk menghasilkan konfigurasi default, Anda harus mengganti nama file ini yang dinonaktifkan dan menjalankan parser konfigurasi:
cd rocket-nginx
cp rocket-nginx.ini.disabled rocket-nginx.ini
php rocket-parser.php
Ini akan menghasilkan konfigurasi default.conf
yang dapat disertakan untuk semua situs web. Jika Anda perlu mengubah konfigurasi default, Anda dapat mengedit file ini dan menambahkan bagian lain di bagian bawah file.
Kemudian, di file konfigurasi Nginx Anda, Anda harus menyertakan konfigurasi yang dihasilkan. Jika konfigurasi situs web Anda ada di /etc/nginx/sites-available
, Anda perlu mengubah konfigurasi Anda:
server {
...
# Rocket-Nginx configuration
include rocket-nginx/conf.d/default.conf;
...
}
Sebelum memuat ulang konfigurasi Anda, pastikan Anda mengujinya: nginx -t
Setelah pengujian Anda selesai, Anda harus memuat ulang konfigurasi Anda. service nginx reload
Itu saja.
Tidak ada konfigurasi yang harus dilakukan. Ini akan berhasil di luar kotak. Namun, Anda dapat mengedit beberapa hal...
Buka saja file rocket-nginx.ini
dan lihat semua opsi di dalamnya.
Anda dapat menambahkan bagian baru berdasarkan konfigurasi default seperti 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"
Setelah Anda mengedit file ini, Anda harus membuat ulang file konfigurasi Nginx Anda dengan menjalankan parser:
php rocket-parser.php
Kemudian, bagian yang baru ditambahkan atau diubah akan menghasilkan file konfigurasi pembaruan (*.conf).
Terakhir, setiap kali Anda membuat (atau membuat ulang) file konfigurasi, Anda harus:
Uji untuk memastikan tidak menghasilkan kesalahan apa pun:
nginx -t
Muat ulang konfigurasi:
service nginx reload
Mulai versi 3.0, folder conf.d
dibuat. Untuk setiap profil berbeda yang Anda buat, subfolder dibuat di dalam folder tersebut. Di dalamnya, Anda dapat membuat file yang akan dimasukkan ke dalam file konfigurasi yang dihasilkan.
Anda dapat memasukkan file konfigurasi pada waktu yang berbeda.
Di profil default, buat file di conf.d/default/
yang memiliki pola nama file berikut: start.*.conf
.
Di profil default, buat file di conf.d/default/
yang memiliki pola nama file berikut: global.*.conf
.
Di profil default, buat file di conf.d/default/
yang memiliki pola nama file berikut: http.*.conf
.
Di profil default, buat file di conf.d/default/
yang memiliki pola nama file berikut: preprocess.*.conf
.
Di profil default, buat file di conf.d/default/
yang memiliki pola nama file berikut : css.*.conf
.
Di profil default, buat file di conf.d/default/
yang memiliki pola nama file berikut: js.*.conf
.
Di profil default, buat file di conf.d/default/
yang memiliki pola nama file berikut: media.*.conf
.
Anda mungkin ingin memeriksa apakah file Anda disajikan langsung oleh Nginx dan tidak memanggil PHP apa pun. Untuk melakukannya, buka file rocket-nginx.ini
dan ubah nilai debug dari:
debug = false
Ke:
debug = true
Header berikut tetap ada, tidak peduli apakah debug disetel ke benar atau salah:
Alasan tidak menyajikan file cache:
Apakah Rocket-Nginx sempurna? Tidak, tidak! Kami mencoba membuatnya sesempurna mungkin, namun bahasa skrip Nginx tidak menawarkan semua kemungkinan yang ditawarkan oleh bahasa seperti PHP, misalnya. Oleh karena itu, ada beberapa batasan.
Siput yang dikodekan
Jawaban singkat: Siput yang dikodekan tidak dapat dilayani oleh Rocket-Nginx.
Karena keterbatasan skrip Nginx, slug seperti 'جزازة العشب' dikodekan dan file disimpan oleh WP Rocket sebagai '%d8%ac%d8%b2%d8%a7%d8%b2%d8%a9%20%d8%a7 %d9%84%d8%b9%d8%b4%d8%a8' (huruf kecil). Beberapa browser, seperti Google Chrome, akan mengirimkan permintaan sebagai '%D8%AC%D8%B2%D8%A7%D8%B2%D8%A9%20%D8%A7%D9%84%D8%B9%D8% B4%D8%A8' (huruf besar). Dengan menggunakan bahasa seperti PHP, akan mudah untuk membandingkan string-string ini secara setara. Dengan Nginx, hal ini tidak mungkin dilakukan kecuali modul pihak ketiga (seperti Perl atau Lua) diperlukan. Untuk membuat Rocket-Nginx seumum mungkin, diputuskan untuk tidak menambahkan ketergantungan modul. Jika Anda ingin mendukung slug yang dikodekan dan menambahkan kode yang hilang, perhatikan bahwa versi 3.1.0 (dan yang lebih baru) menawarkan konfigurasi baru yang menyertakan nama "preprocess" untuk mengubah huruf besar/kecil variabel $rocket_uri_path
(huruf kecil paksa).
Kompatibilitas WEBP
Jawaban singkatnya: Rocket-Nginx tidak akan menyajikan file cache WebP yang dihasilkan oleh WP Rocket jika Anda mengaktifkan fitur Kompatibilitas WebP.
WP Rocket dapat membuat cache tertentu jika Anda menggunakan alat untuk mengonversi gambar Anda (JPG, PNG, ...) ke WebP. Sayangnya, bahasa skrip Nginx tidak cukup kuat untuk mencapai validasi dengan benar. Oleh karena itu, jika Anda mengaktifkan fitur ini, Rocket-Nginx akan membiarkan WP Rocket menangani permintaan tersebut dan menyajikan halaman cache yang tepat, bergantung pada konteksnya.
Apakah Rocket-Nginx kompatibel dengan BF Cache (cache mundur/maju)?
Ya! Jika situs web Anda tidak menampilkan data sensitif dan cocok untuk cache Mundur/maju, Anda harus mengedit konfigurasi Rocket-Nginx Anda dengan mengikuti diskusi BF Cache di terbitan.
Bagaimana cara mengupgrade dari versi 1 atau 2 ke versi 3?
Kami menyarankan Anda menyimpan konfigurasi sebelumnya dan memulai dari awal. Manfaatkan kesempatan ini untuk meninjau semuanya karena banyak hal telah berubah. Secara resmi, versi 3.x tidak kompatibel dengan versi sebelumnya. Memulai dari awal tidak akan memakan waktu lebih dari 15 menit.
Apa yang baru di versi 3.x?
Banyak hal!
Apakah Anda memiliki patokan tentang proyek ini?
Tidak. Orang menyukai benchmark sama seperti mereka membencinya. Semua tolok ukur memiliki orang-orang yang mengklaim bahwa X, Y, atau Z dapat dilakukan untuk meningkatkan hasilnya. Dalam proyek ini, tolok ukurnya akan bergantung pada berapa banyak plugin yang Anda miliki yang memengaruhi halaman meskipun keluarannya ada dalam cache (misalnya WP Rocket mengeksekusi PHP meskipun file ada dalam cache). Apa yang dapat kami katakan adalah Anda akan beralih dari NGINX → PHP-FPM → WordPress (PHP dan Database) → Static file ke NGINX → Static file . Dengan kata lain, Anda menyajikan file statis langsung dari NGINX alih-alih meneruskan permintaan ke FPM lalu ke PHP (setidaknya untuk WP Rocket...) sebelum menyajikan file statis.
Apakah Rocket-Nginx akan berfungsi jika situs saya menggunakan sertifikat SSL (https)?
Ya! Rocket-Nginx akan mendeteksi apakah permintaan dibuat melalui HTTP atau HTTPS dan menyajikan file yang tepat tergantung pada jenis permintaan. Kedua protokol tersebut ditangani secara otomatis sejak versi 1.0.
Dirilis di bawah Lisensi MIT. Lihat file lisensi untuk detailnya.