NỘI DUNG
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.
- Các trình duyệt web gửi yêu cầu HTTP đến Nginx.
- 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.
- 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.
- PHP-FPM tạo ra một trang HTML tĩnh, sau đó trả lại cho Nginx.
- 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.
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
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 .
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.
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');
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.
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
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.