GNU/Linux >> Belajar Linux >  >> Linux

Cara mengaktifkan caching FastCGI sisi server dengan Nginx dan PHP

Nginx adalah server web open-source dan berkinerja tinggi yang dapat digunakan untuk mempercepat pengiriman konten dan aplikasi. Nginx meningkatkan keamanan, meningkatkan skalabilitas, dan juga dapat digunakan sebagai penyeimbang beban ketersediaan tinggi. Ini dapat digunakan sebagai proxy terbalik dan salah satu kegunaan Nginx yang paling penting adalah cache konten. Salah satu pendekatan terbaik adalah menggunakan Nginx sebagai cache konten. Dalam artikel ini, kita akan membahas cache konten Nginx FastCGI untuk kinerja situs web yang lebih baik.

Mengaktifkan cache FastCGI di Nginx

Dalam artikel ini, kami berasumsi bahwa Anda telah menginstal Nginx dengan PHP di mesin Linux Anda.

Untuk mulai mengaktifkan caching FastCGI, edit file konfigurasi host virtual tempat caching akan diaktifkan.

$ cd /etc/nginx/conf.d
$ vi example.conf

Tambahkan konten berikut ke bagian atas file. Ingat bahwa garis harus berada di luar direktif {} server .

fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=MYAPP:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

Dimana,

  • fastcgi_cache_path – lokasi cache
  • level – tingkat hierarki cache, ia mengatur hierarki direktori dua tingkat di bawah /etc/nginx/cache
  • keys_zone – nama zona memori (Dalam contoh ini saya telah menggunakan MYAPP. Anda dapat memiliki preferensi sendiri)
  • tidak aktif – menentukan waktu setelah data cache yang tidak diakses selama waktu yang ditentukan akan dihapus dari cache. Dalam contoh ini, waktu tidak aktif diatur 60m yang dapat ditambah atau dikurangi.
  • fastcgi_cache_key – Ini menentukan bagaimana nama file cache akan di-hash

Variabel yang digunakan dalam factcgi_cache_key

  • $skema – skema permintaan HTTPS atau HTTP
  • $request_method – menentukan metode permintaan seperti GET atau POST
  • $host – Nama server yang cocok dengan permintaan
  • $request_uri – URI permintaan penuh

Lokasi file cache dapat berada di mana saja di hard disk tetapi ukurannya harus lebih kecil dari RAM+swap sistem untuk menghindari masalah “Tidak dapat mengalokasikan memori”.

Sekarang buka direktif lokasi tempat permintaan PHP diteruskan ke php-fpm. Di dalam “location ~ \.php$ {}” tambahkan baris berikut

fastcgi_cache MYAPP;
fastcgi_cache_valid 200 1m;

Di mana MYAPP adalah nama zona memori dan fastcgi_cache_valid 200 menyimpan semua respons HTTP 200.

Jika hanya waktu yang ditentukan, maka 200, 301, dan 302 tanggapan di-cache.

Jalankan perintah berikut untuk menguji konfigurasi vhost Nginx.

$ nginx -t

Sekarang restart layanan Nginx.

$ systemctl restart nginx

File konfigurasi vhost lengkap terlihat seperti

fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=MYAPP:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

server {
  listen 80;
  root /usr/share/nginx/html;
  index index.php index.html index.htm;
  server_name your_server_name;
  location / {
    try_files $uri $uri/ /index.html;
  }
  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:unix:/run/php/php8.0-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_cache MYAPP;
    fastcgi_cache_valid 200 60m;
  }
}

Menguji cache FastCGI

Buat file PHP sederhana di direktori root dokumen.

$ vi /usr/share/nginx/html/info.php

Tempel konten berikut dan simpan

<?php
phpinfo();
?>

Sekarang minta file menggunakan perintah curl atau menggunakan browser

Jika caching berfungsi dengan baik, maka Anda dapat mencantumkan direktori caching di bawah /etc/nginx/cache

Tambahkan baris berikut di atas direktif server{} untuk menunjukkan apakah cache tidak terjawab atau mengenai

add_header X-Cache $upstream_cache_status;

Mulai ulang Nginx dan jalankan perintah curl sebagai

$ curl -I http://localhost/info.php

Menyetel pengecualian cache di Nginx fastCGI Cache

Terkadang kita mungkin tidak perlu menyimpan konten dinamis seperti halaman otentikasi dasar. Jenis konten ini dapat dihindari agar tidak di-cache berdasarkan variabel yang berbeda seperti “$request_method” “”$request_uri” “$http_cookie” dll.

Di bawah ini adalah contoh konfigurasi untuk pengecualian cache dan harus digunakan di dalam server{}

arahan.

#Cache everything by default

set $no_cache 0;

#Don't cache POST requests
if ($request_method = POST)
{
set $no_cache 1;
}


#Don't cache if the URL contains a query string
if ($query_string != "")
{
set $no_cache 1;
}


#Don't cache the following URLs
if ($request_uri ~* "/(cp/)")
{
set $no_cache 1;
}

#Don't cache if there is a cookie called PHPSESSID
if ($http_cookie = "PHPSESSID")
{
set $no_cache 1;
}

Kesimpulan

Pada artikel ini, kami mempelajari cara mengonfigurasi Nginx dengan PHP untuk cache konten dinamis. Selain itu, kami mempelajari berbagai kiat untuk menyiapkan pengecualian cache.


Linux
  1. Cara Memasang dan Mengatur Varnish Cache 6 dengan Nginx di CentOS 8

  2. Cara Mengaktifkan HTTP2 di NGINX

  3. Cara menginstal PHP 7.4 Dengan Nginx di Ubuntu 20.04

  1. Cara Menginstal dan Mengaktifkan Cache PHP Alternatif (APC) di CentOS

  2. Cara Menginstal Node.js dengan NVM dan Nginx di Ubuntu 22.04

  3. Bagaimana cara menyelidiki kebocoran memori dengan Apache dan PHP?

  1. Cara Menginstal Nextcloud dengan Nginx dan PHP 7.3 di CentOS 8

  2. Cara Menginstal Drupal 8.1 dengan Nginx, PHP-FPM dan SSL di Ubuntu 16.04

  3. Cara Mengonfigurasi Nginx agar Bekerja dengan PHP melalui PHP-FPM