Hướng dẫn bật Nginx FastCGI Cache toàn cục trên Centmin Mod giúp giảm TTFB xuống dưới 50ms
Khi vận hành website WordPress trên VPS Centmin Mod (ngay cả tại các location như Singapore về Việt Nam), chỉ số TTFB (Time to First Byte) mặc định thường bị kéo dài từ 1.5s – 2.0s do máy chủ phải xử lý script PHP và truy vấn MySQL cho mỗi lượt tải trang. Việc kích hoạt Nginx FastCGI Cache là giải pháp tối ưu nhất để trả thẳng bản tĩnh HTML từ bộ nhớ, giúp tốc độ phản hồi máy chủ đạt mức tức thì (< 50ms).
Bài viết này sẽ hướng dẫn bạn cấu hình Nginx FastCGI Cache toàn cục bền vững: Áp dụng tự động cho tất cả website hiện có lẫn web cài mới sau này, đồng thời không lo bị mất cấu hình khi cập nhật PHP hoặc Centmin Mod.

Bước 1: Khai báo vùng nhớ FastCGI Cache trong file cấu hình Nginx chính
Đầu tiên, chúng ta cần khai báo đường dẫn lưu trữ cache và định dạng cache key trong block http { ... } của Nginx.
Mở file nginx.conf chính:
nano /usr/local/nginx/conf/nginx.conf
Tìm đến block http { ... }, giữ nguyên các cấu hình cũ và chèn thêm 2 dòng khai báo bộ nhớ cache dưới đây vào ngay bên trong:
http {
...
# Khai bao bo nho FastCGI Cache
fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=wpbox:100m max_size=1g inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
...
}
Lưu lại bằng Ctrl + O → Enter → Ctrl + X để thoát.
Bước 2: Tạo bộ quy tắc loại trừ Cache cho WordPress (wpcache.conf)
Chúng ta cần chặn cache đối với các trang quản trị wp-admin, trang đăng nhập, giỏ hàng WooCommerce, REST API (wp-json) và người dùng đã đăng nhập để tránh gây lỗi không thể cập nhật bài viết.
Tạo file wpcache.conf:
nano /usr/local/nginx/conf/wpcache.conf
Dán toàn bộ nội dung quy tắc chuẩn dưới đây vào file:
# Cấu hình bỏ qua Cache cho WordPress
set $no_cache 0;
# Không cache các request POST
if ($request_method = POST) {
set $no_cache 1;
}
# Không cache nếu có Query String (trừ trường hợp tùy chỉnh)
if ($query_string != "") {
set $no_cache 1;
}
# Không cache các trang Admin, REST API, Login, Cart, Checkout, Sitemap
if ($request_uri ~* "/(wp-admin/|wp-json/|xmlrpc.php|wp-login.php|dashboard/|me/|account/|cart/|checkout/|wp-comments-post.php|feed/|sitemap.*\.xml)") {
set $no_cache 1;
}
# Chỉ KHÔNG cache cho người dùng ĐÃ ĐĂNG NHẬP ADMIN
if ($http_cookie ~* "wordpress_logged_in_") {
set $no_cache 1;
}
Bước 3: Tạo cấu hình FastCGI Cache toàn cục không lo bị ghi đè khi Update
Để tránh trường hợp Centmin Mod cập nhật lại file php.conf mặc định và làm mất các dòng lệnh cache, chúng ta tạo một file tùy chỉnh tên là php-custom.conf.
Tạo file php-custom.conf:
nano /usr/local/nginx/conf/php-custom.conf
Dán đoạn code nạp bộ quy tắc và kích hoạt FastCGI Cache vào file:
# Include quy tắc loại trừ cache include /usr/local/nginx/conf/wpcache.conf; # Cấu hình FastCGI Cache fastcgi_cache wpbox; fastcgi_cache_bypass $no_cache; fastcgi_no_cache $no_cache; fastcgi_cache_valid 200 301 302 60m; fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503; # Header kiểm tra trạng thái cache add_header X-Cache $upstream_cache_status;
Bước 4: Nhúng cấu hình Custom vào hệ thống PHP của Centmin Mod
Để mọi vhost trên VPS (cả HTTP và HTTPS, web cũ lẫn web cài mới sau này) tự động nhận diện cache, ta mở file php.conf hệ thống:
nano /usr/local/nginx/conf/php.conf
Tìm đến block location ~ \.php$ { ... } và chèn dòng include php-custom.conf vào ngay dòng đầu tiên bên trong block đó:
location ~ \.php$ {
include /usr/local/nginx/conf/php-custom.conf;
...
}
Bước 5: Kiểm tra cú pháp và khởi động lại Nginx
Tạo thư mục lưu cache trên đĩa cứng và kiểm tra cú pháp cấu hình Nginx:
mkdir -p /tmp/wpcache chown -R nginx:nginx /tmp/wpcache nginx -t && systemctl reload nginx
Nếu màn hình hiển thị syntax is ok và test is successful, hệ thống đã nạp thành công!
Bước 6: Kiểm tra kết quả hoạt động của Cache & Đo tốc độ TTFB
Thực hiện gửi request kiểm tra trạng thái header X-Cache trên tên miền của bạn bằng câu lệnh cURL:
# Lần 1 (Tạo bản cache mới - mong đợi kết quả: MISS hoặc BYPASS) curl -sI https://tenmien-cuaban.com | grep -i x-cache # Lần 2 (Đọc bản cache - mong đợi kết quả: HIT) curl -sI https://tenmien-cuaban.com | grep -i x-cache
Khi kết quả trả về x-cache: HIT, hãy chạy câu lệnh dưới đây để đo lại chi tiết bảng thời gian phản hồi máy chủ:
curl -s -w "\n--- BẢNG THỜI GIAN ---\nDNS Lookup: %{time_namelookup}s\nConnect (TCP): %{time_connect}s\nSSL Handshake: %{time_appconnect}s\nTTFB (Máy chủ phản hồi): %{time_starttransfer}s\nTotal Time: %{time_total}s\n" -o /dev/null https://tenmien-cuaban.com
Kết quả mong đợi: Chỉ số TTFB (time_starttransfer) sẽ giảm từ 1.5s – 1.8s xuống chỉ còn 0.03s – 0.05s (30ms – 50ms).
Bước 7: Cơ chế tự động dọn dẹp Cache khi đăng bài mới
Khi FastCGI Cache hoạt động, Nginx sẽ lưu bản tĩnh của website trong 60 phút. Để các thay đổi (viết bài mới, chỉnh sửa giao diện, sửa nội dung) cập nhật ngay lập tức ra ngoài trang chủ, bạn có 2 lựa chọn:
- Cách 1 (Tự động): Cài đặt plugin Nginx Helper trên trang Admin WordPress. Вật Enable Purge, chọn Nginx FastCGI cache, Purge Method chọn nginx Unlink File và nhập Cache Path là
/tmp/wpcache. - Cách 2 (Thủ công): Khi nào chỉnh sửa nội dung xong, lên terminal chạy duy nhất 1 dòng lệnh dọn sạch thư mục cache:
rm -rf /tmp/wpcache/*
