Nginx Cache adalah fitur bawaan Nginx yang berfungsi sebagai penyimpanan sementara untuk respons yang telah diproses oleh server. Dengan Nginx Cache, permintaan yang sama dapat langsung dilayani tanpa harus diteruskan ke backend berulang kali, sehingga meningkatkan kecepatan akses dan mengurangi beban server.
Beberapa Jenis Caching di Nginx:
Overview
A content cache sits in between a client and an “origin server”, and saves copies of all the content it sees. If a client requests content that the cache has stored, it returns the content directly without contacting the origin server.
Sebelum mulai konfigurasi Nginx Cache, ada beberapa hal yang perlu disiapkan, di antaranya menyiapkan perangkat Linux dan Koneksi Internet. Di sini Kami menggunakan Server VPS bersistem operasi Linux Ubuntu untuk mengonfigurasi Nginx Cachenya.
Spesifikasi VPS yang Kami Gunakan
Nginx FastCGI Cache adalah caching yang digunakan untuk menyimpan respons dari PHP-FPM, sehingga permintaan yang sama dapat dilayani langsung dari cache tanpa perlu memproses ulang skrip PHP. Jenis cache ini cocok digunakan untuk web-web seperti WordPress, Laravel, Yii2, Code Igniter, dan web PHP lainya.
Langkah Utama
Peta Pengetahuan
/var/cache/nginx/wordpress01/etc/nginx/conf.d/fastcgi_cache_pool.confvar/www/wordpress01/fastcgi_cache.conf )Baca Juga : Cara Mengetahui IP Asli Pengunjung di Website yang Menggunakan Proxy Cloudflare
Seperti yang sudah kami jelaskan sebelumnya, cache akan disimpan di storage. Untuk itu, pertama kita perlu membuat direktori sebagai media penyimpanan cache. Kemudian, ubah owner direktori tersebut ke www-data agar bisa dibaca dan ditulis oleh Nginx. Atur juga permission-nya menjadi 700. Direktori cache akan dibuat di /var/cache/nginx.
sudo mkdir -p /var/cache/nginx/wordpress01/
Kemudian ubah permission dan owner direktorinya ke 755 dan www-data
sudo chown www-data:www-data /var/cache/nginx/wordpress01/
sudo chmod 755 /var/cache/nginx/wordpress01/
Zona cache adalah area penyimpanan yang digunakan untuk menyimpan data yang di-cache. Zona cache ini berfungsi untuk menyimpan salinan dari hasil pemrosesan request, sehingga Nginx dapat menyajikan data tersebut lebih cepat ketika ada request yang sama.
Buat file baru untuk menyimpan konfigurasi zona cache
sudo nano /etc/nginx/conf.d/fastcgi_cache_pool.conf
Kemudian salin dan tempel kode baris berikut ini:
# Zona Cache WordPress01
fastcgi_cache_path /var/cache/nginx/wordpress01 levels=1:2
keys_zone=wordpress01:10m max_size=512m inactive=30m;
Keterangan
wordpress01 dan menyimpan file cache ke direktori /var/cache/nginx/wordpress01. Zona cache ini menyimpan metadata cache sebesar 10 MB, sementara ukuran maksimal file cache bisa disimpan sebesar 512 MB. Jika suatu objek cache tidak diakses selama 30 menit, maka objek tersebut akan dihapus secara otomatis.Setelah membuat zona cache, langkah selanjutnya adalah membuat file konfigurasi yang berisi aturan-aturan cache bekerja dan pengecualian apa saja yang tidak boleh dicache. Konfigurasi ini akan diletakkan di /var/www/domain-web dengan tujuan agar lebih terstruktur dan mudah dikelola.
sudo nano /var/www/wordpress01/fastcgi_cache.conf
Kemudian masukkan konfigurasi FastCGI Cache berikut. Konfigurasi di bawah ini sudah mencakup aturan cache, header, dan pengecualian halaman yang tidak dicache, seperti halaman login atau halaman keranjang belanja.
# Aturan Cache
fastcgi_cache wordpress01; # Disesuaikan dengan zona cache
fastcgi_cache_valid 200 2m;
fastcgi_cache_valid 301 302 10m;
fastcgi_cache_valid 404 10m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
set $no_cache 0;
add_header X-FastCGI-Cache $upstream_cache_status;
# Aturan Bypass Jika User login WordPress atau WooCommerce
if ($http_cookie ~* "wordpress_logged_in|SESS|comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|woocommerce_items_in_cart|woocommerce_cart_hash|PHPSESSID") {
set $no_cache 1;
}
# Aturan Bypass untuk Halaman Admin dan Endpoint WooCommerce
if ($request_uri ~* "/wp-admin/|/wp-json/|wp-.*.php|xmlrpc.php|index.php|/store.*|/cart.*|/my-account.*|/checkout.*") {
set $no_cache 1;
}
Sekarang kita akan menerapkan konfigurasi fastcgi cache yang telah dibuat ke virtual host Nginx. Perlu diperhatikan untuk menerapkan konfigurasi cache ini Anda harus sudah memiliki web yang telah berjalan. Kami sendiri sudah memiliki sebuah web wordpress yang sudah berjalan, dan akan kami terapkan konfigurasi fastcgi cache ini ke dalam virtualhostnya.
Edit virtualhost website yang akan diterapkan fastcgi cache.
sudo nano /etc/nginx/sites-enabled/example.com
Salin baris berikut dan tempel ke dalam baris block location ~ \.php$ {}. Baris ini akan memanggil aturan cache yang tadi sudah Kita buat.
# Menerapkan Aturan Cache ke Virtualhost
include /var/www/wordpress/fastcgi_cache.conf;
Lihat gambar di bawah ini sebagai contoh:

Terakhir verifikasi dan restart service nginx.
sudo nginx -t
sudo systemctl restart nginx
Untuk tahap pengujian ini Kita akan menggunakan 2 metode, yaitu menggunakan cURL dan Apache Benchmark. cURL digunakan untuk memeriksa cache dengan melihat header HTTP yang dikembalikan oleh server. Sedangkan Apache Benchmark (ab) digunakan untuk mengukur performa dan melihat perbedaan kecepatan sebelum dan sesudah cache diaktifkan.
Gunakan perintah berikut untuk mengecek status cache pada website:
curl -I https://example.com
Perhatikan pada bagian X-Cache apakah terdapat salah satu dari status berikut:
Contoh gambar di bawah ini jika cache berhasil dibuat (HIT)

Kita coba untuk tes cURL ke wp-admin, Jika aturan cache berhasil, respon cache harusnya Bypass. Krena wp-admin tidak boleh dicache.

Menggunakan FastCGI Cache di Nginx adalah cara efektif untuk mempercepat WordPress dengan mengurangi beban server dan waktu muat halaman. Dengan konfigurasi yang tepat, website Anda akan lebih responsif dan efisien.
Pastikan untuk menguji cache, menyesuaikan aturan sesuai kebutuhan, serta membersihkan cache secara berkala agar tidak menampilkan konten usang. Dengan langkah ini, performa WordPress Anda akan tetap optimal. 🚀