Nginx FastCGI Cache là gì?

Nginx được cấu hình để chuyển yêu cầu PHP sang PHP-FPM vì bản thân Nginx không thể xử lý mã PHP. Hãy cùng tìm hiểu cách mà LEMP hoạt động.

  1. Các trình duyệt web gửi yêu cầu HTTP đến Nginx.
  2. Nếu Nginx tìm thấy mã PHP, nó sẽ chuyển yêu cầu tới PHP-FPM để xử lý mã PHP.
  3. Nếu cần, PHP-FPM sẽ truy vấn cơ sở dữ liệu MySQL/MariaDB để lấy những gì nó cần.
  4. PHP-FPM tạo ra một trang HTML tĩnh, sau đó trả lại cho Nginx.
  5. Cuối cùng, Nginx gửi trang HTML tĩnh tới trình duyệt web.

Nginx hoạt động cực nhanh khi phục vụ các trang HTML tĩnh. Thay vì chuyển yêu cầu trang động tới PHP-FPM, Nginx có thể lưu trữ trang HTML đã tạo để lần sau nó có thể gửi các trang được lưu trong bộ nhớ cache tới trình duyệt web.

  • Điều này có thể cải thiện đáng kể thời gian phản hồi của máy chủ và giảm tải cho PHP-FPM và MySQL/MariaDB.
  • Nó cũng cho phép Nginx phục vụ các trang web từ bộ đệm khi máy chủ cơ sở dữ liệu PHP-FPM gặp vấn đề (MySQL/MariaDB thường sẽ không hoạt động khi máy chủ Linux của bạn hết dung lượng).

FastCGI là giao thức giữa Nginx và PHP-FPM nên cache được gọi là FastCGI Cache.FastCGI là giao thức giữa Nginx và PHP-FPM nên cache được gọi là FastCGI Cache.

nginx fastcgi cache
Cấu hình NGINX FastCGI Cache trên AAPANEL 18

Bước 1: Tạo thư mục cache

Đầu tiên bạn hãy tạo một thư mục để lưu trữ các file cache. Mình sẽ tạo trong /var/run

mkdir /var/run/website_1

Bước 2: Cấu hình vào file nginx.conf

Mình sẽ cấu hình trực tiếp vào file nginx.conf. Bạn hãy SSH vào bên trong server và mở file nginx.conf với lệnh sau.

vi /www/server/nginx/conf/nginx.conf

Lưu ý: Nếu bạn cấu hình cho nhiều web bạn hãy tạo thêm 1 dòng fastcgi_cache_path với đường dẫn mới và thay đổi keys_zone

#FastCGI-Cache
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_path /var/run/website_1 levels=1:2 keys_zone=website_1:100m inactive=7d;
#fastcgi_cache_path /var/run/website_2 levels=1:2 keys_zone=website_2:100m inactive=60m;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
#FastCGI-Cache
Screenshot 2021 08 20 at 19.17.08
Cấu hình NGINX FastCGI Cache trên AAPANEL 19

Bước 3: Cấu hình fastcgi cache vhost domain

Tiếp theo cũng ở file này bạn thêm các đoạn mã cấu hình sau ở dưới #SSL-END .

Screenshot 2021 08 19 at 11.58.44
Cấu hình NGINX FastCGI Cache trên AAPANEL 20

Bên dưới là toàn bộ file cấu hình của mình, bạn hãy copy và dán vào sau đó chỉnh sửa lại thêm một chút thông tin về địa chỉ IP.

Lưu ý: File cấu hình bên dưới sử dụng PHP 7.4. Nếu bạn sử dụng PHP khác bạn có thể thay đổi PHP ở dòng fastcgi_pass unix:/tmp/php-cgi-74.sock;

#FastCGI-Cache
set $skip_cache 0;
        if ($request_method = POST) {
            set $skip_cache 1;
        }   
        if ($query_string != "") {
            set $skip_cache 1;
        }   
        if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
            set $skip_cache 1;
        }   
       if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
            set $skip_cache 1;
        }
       location ~ [^/]\.php(/|$)
            {
                try_files $uri =404;
                fastcgi_pass unix:/tmp/php-cgi-74.sock;
                fastcgi_index index.php;
                include fastcgi.conf;  
                add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
                fastcgi_cache_bypass $skip_cache;
                fastcgi_no_cache $skip_cache;
                add_header X-Cache "$upstream_cache_status From $host";
                fastcgi_cache website_1;
                add_header Cache-Control  max-age=0;
                add_header Nginx-Cache "$upstream_cache_status";
                add_header Last-Modified $date_gmt;
                add_header X-Frame-Options SAMEORIGIN;
                add_header X-Content-Type-Options nosniff;
                add_header X-XSS-Protection "1; mode=block";
                etag  on;
                fastcgi_cache_valid 200 301 302 1d;
        }


        location ~ /purge(/.*) {
            allow 127.0.0.1;
            allow "change_to_your_server_ip";
            deny all;
            fastcgi_cache_purge website_1 "$scheme$request_method$host$1";
        }
#FastCGI-Cache

Ở dòng allow "change_to_your_server_ip"; bạn thay nhập vào IP của máy chủ VPS bạn vào để khả dụng.

Screenshot 2021 08 19 at 11.59.31
Cấu hình NGINX FastCGI Cache trên AAPANEL 21

Khi cấu hình đã xong. Bạn cần làm một bước quan trọng nữa, bạn mở file cấu wp-config.php của web. Và dán vào đường dẫn đến thư mục lưu cache đã tạo ở Bước 1.

define('RT_WP_NGINX_HELPER_CACHE_PATH', '/var/run/website_1');
Screenshot 2021 08 20 at 19.45.15
Cấu hình NGINX FastCGI Cache trên AAPANEL 22

Bước 4: Cài đặt Plugin

Và đây là bước cuối cùng, bạn hãy cài đặt Plugin Plugin Nginx Helper để làm môi trường kết nối.

Screenshot 2021 08 19 at 12.05.12
Cấu hình NGINX FastCGI Cache trên AAPANEL 23

Screenshot 2021 08 19 at 12.21.14
Cấu hình NGINX FastCGI Cache trên AAPANEL 24

Sau khi cấu hình hoàn tất, bạn có thể kiểm tra trực tiếp ở cửa sổ SSH bằng lệnh currl -I https://my-domain

Screenshot 2021 08 19 at 12.08.44
Cấu hình NGINX FastCGI Cache trên AAPANEL 25

Như vậy đã hoàn tất các bước cấu hình. Với site thứ 2 bạn chỉ cần làm từ bước 3 là được.

Qua bài viết này mình đã hướng dẫn các bạn cách cài đặt Nginx FastCGI Cache giúp giảm tải máy chủ và giúp website của bạn load nhanh hơn. Chúc các bạn thực hiện thành công.