Cam kết Chọn ngay Chuyên Nghiệp trong phục vụ với hơn 20 Kỹ thuật IT luôn sẵn sàng tới tận nơi sửa chữa và cài đặt ở Tphcm. Báo giá rõ ràng. 100% hài lòng mới thu tiền.


Sửa máy tính cài win PCI

Cam kết Chọn ngay Chuyên Nghiệp trong phục vụ với hơn 20 Kỹ thuật IT luôn sẵn sàng tới tận nơi sửa chữa và cài đặt ở Tphcm. Báo giá rõ ràng. 100% hài lòng mới thu tiền.


Công ty sửa máy tính PCI

Cài đặt Nginx FastCGI Cache để giảm thời gian phản hồi của máy chủ WordPress

Cài đặt Nginx FastCGI Cache để giảm thời gian phản hồi của máy chủ WordPress Trong bài viết này, PCI sẽ 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.

Cài đặt Nginx FastCGI Cache – Nginx là một trong số máy chủ web thông dụng nhất trên ngoài nước và có khả năng phục vụ các trang web với dung lượng lớn. Nó dành dụm tài nguyên hệ thống hơn Apache và cũng có thể được sử dụng làm máy server web hoặc proxy ngược.

Trong bài viết này,  PCI sẽ 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.

Hướng dẫn cài đặt Nginx FastCGI Cache

1. 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 chẳng thể giải quyết 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 đòi hỏi 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 nên một trang HTML tĩnh, sau đó hoàn trả 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 đòi hỏi trang động tới PHP-FPM, Nginx cũng đều có thể lưu giữ trang HTML đã tạo để lần sau nó cũng 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òn có thể cải thiện đáng kể thời gian phản hồi của máy server 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 server cơ sở dữ liệu PHP-FPM gặp vấn đề (MySQL/MariaDB thường sẽ không hoạt động khi máy server 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 coi là FastCGI Cache.

2. Cách cấu hình Nginx FastCGI Cache

2.1. Bước 1: Cài đặt LEMP Stack

Việc trước mắt các bạn nên làm là cài đặt LEMP Stack trên máy chủ của mình. Nếu bạn chưa cài đặt LEMP Stack hãy xem thêm hướng dẫn cài đặt LEMP của PCI:

  • Hướng dẫn cách cài đặt LEMP trên Centos 7
  • Hướng dẫn cài đặt LEMP trên Ubuntu 18
  • Hướng dẫn cài đặt LEMP trên Ubuntu 20
  • Hướng dẫn cài đặt LEMP trên CentOS 8

2.2. Bước 2: Chỉnh sửa tập tin cấu hình chính của Nginx

Chỉnh sửa tập tin cấu hình chính Nginx /etc/nginx/nginx.conf .

  • Hướng dẫn sử dụng Nano Editor trên Linux
1

nano / etc / nginx / nginx . conf

Trong http block, các bạn thêm 2 dòng sau:

1
2

fastcgi_cache_path / etc / nginx / cache levels = 1 : 2 keys_zone = phpcache : 100m max_size = 10g inactive = 60m use_temp_path = off ;
fastcgi_cache _ key “$scheme$request_method$host$request_uri” ;

Screenshot_46 - Cài đặt Nginx FastCGI Cache

Lệnh fastcgi_cache_path sẽ tạo bộ đệm FastCGI. Lệnh này chỉ khả dụng trong block http của tệp cấu hình Nginx.

  • Đối số trước mắt chỉ định vị trí lưu cache ( /etc/nginx/cache/ ).
  • Tham số level thiết lập hệ thống phân cấp thư mục hai cấp dưới /etc/nginx/cache/ . Nếu có quá độ tệp trong 1 thư mục có thể làm chậm việc truy cập tệp, vì vậy PCI khuyên bạn nên sử dụng thư mục hai cấp . Nếu tham số level không được cấu hình, Nginx sẽ đặt mọi thứ các tệp trong cùng một thư mục.
  • Đối số thứ 3 chỉ định tên của tên vùng nhớ chung ( phpcache ) và kích cỡ của nó ( 100M ). Vùng nhớ này để lưu giữ các khóa bộ đệm và siêu dữ liệu như thời gian sử dụng. Có một bản sao của các phím trong bộ nhớ cho phép Nginx nhanh chóng định vị xem yêu cầu là HIT hay MISS mà không cần phải vào đĩa, giúp tăng tốc đáng kể việc kiểm tra. Vùng 1 MB có thể lưu giữ dữ liệu cho khoảng 8.000 khóa, vì vậy vùng 100 MB có thể lưu giữ dữ liệu cho khoảng 800.000 khóa.
  • max_size đặt giới hạn tối đa của kích thước bộ đệm (10GB trong ví dụ này). Nếu không được chỉ định, bộ đệm cũng có thể có thể sử dụng mọi thứ dung lượng đĩa còn lại. Khi bộ đệm đạt kích cỡ tối đa, trình quản lý bộ đệm Nginx sẽ xóa các tệp được dùng mới đây nhất khỏi bộ đệm.
  • inactive : Dữ liệu chưa được truy cập trong khoảng thời gian không hoạt động ( 60 phút ) sẽ có trình quản lý bộ đệm xóa bỏ bộ đệm, bất cứ nó đã hết hạn hay chưa. Giá trị mặc định là 10 phút. Bạn cũng đều có thể sử dụng các giá trị như 12h (12 giờ) và 7d (7 ngày).
  • use_temp_path : Đầu tiên Nginx ghi các tệp được định sẵn cho bộ đệm vào vùng lưu trữ tạm thời ( /var/lib/nginx/fastcgi/ ). use_temp_path = off bắt buộc Nginx ghi chúng trực diện vào thư mục bộ đệm để né việc sao chép dữ liệu chẳng cần thiết giữa các hệ thống tệp.

Lệnh thứ hai fastcgi_cache_key xác định khóa để tra cứu bộ đệm. Nginx sẽ áp dụng hàm băm MD5sum trên khóa bộ đệm và sử dụng kết quả băm làm tên của các tệp bộ đệm. Sau lúc nhập hai chỉ thị trong block http, lưu và đóng tệp.

Sau đó các bạn triển khai tạo thư mục chứa cache và phân quyền cho nó

1
2

mkdir p / etc / nginx / cache
chown R nginx : nginx / etc / nginx / cache

2.3. Bước 3: Chỉnh sửa Server Block

Tiếp theo mở tập tin cấu hình Server Block (Vhost) của bạn.

1

nano / etc / nginx / conf . d / your domain . conf

Cuộn xuống địa thế ~.php$ . Thêm các loại sau trong phần này.

1
2
3
4
5
6

fastcgi_cache phpcache ;
fastcgi_cache _ valid 200 301 302 60m ;
fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503 ;
fastcgi_cache_min _ uses 1 ;
fastcgi_cache_lock on ;
add _ header X FastCGI Cache $ upstream_cache_status ;

Screenshot_48

  • Lệnh fastcgi_cache cấp phép lưu vào bộ đệm, sử dụng vùng nhớ được tạo trước đấy bởi lệnh fastcgi_cache_path .
  • Fastcgi_cache_valid đặt thời gian bộ đệm tùy thuộc vào mã trạng thái HTTP. Trong tỉ dụ trên, các phản hồi với mã trạng thái 200, 301, 302 sẽ có lưu trong 60 phút. Bạn cũng cũng đều có thể sử dụng khoảng thời gian như 12h (12 giờ) và 7ngày (7 ngày).
  • Nginx có thể phân phối nội dung cũ từ bộ đệm của nó khi nó nhận được nội dung cập nhật từ máy server PHP-FPM. Ví dụ: khi máy chủ cơ sở dữ liệu MySQL/MariaDB ngừng hoạt động. Thay vì chuyển lỗi cho khách hàng, Nginx có thể cung cấp phiên bản cũ của tệp từ bộ đệm của nó. Để kích hoạt chức năng này, chúng tôi đã thêm fastcgi_cache_use_stale .
  • fastcgi_cache_min_uses đặt số lần một mục mà khách hàng phải yêu cầu trước khi Nginx lưu trữ nó. Giá trị mặc định là 1.
  • Khi bật fastcgi_cache_lock , nếu nhiều máy khách đòi hỏi một tệp không có trong bộ đệm, chỉ những yêu cầu trước mắt trong số đó mới được phép thông qua máy server PHP-FPM. Các yêu cầu còn sót lại chờ yêu cầu kia được bão hòa và sau đó sử dụng tệp từ trong bộ đệm. Nếu không bật fastcgi_cache_lock , mọi thứ các đòi hỏi sẽ có chuyển thẳng đến máy server PHP-FPM .
  • Dòng thứ 3 thêm tiêu đề X-FastCGI-Cache trong phản hồi HTTP. Nó có thể được sử dụng để xác thực xem yêu cầu đã được phục vụ từ bộ đệm FastCGI hay chưa.

Bây giờ lưu và đóng tệp cấu hình Server Block (Vhost) . Sau đó kiểm tra cấu hình Nginx của bạn.

1

nginx t

Nếu không có lỗi nào được thông báo hãy tải lại Nginx.

1

service nginx reload

2.4. Bước 4: Kiểm tra Nginx FastCGI Cache

Tải lại trang chủ của bạn một vài lần. Sau đó sử dụng curl để lấy tiêu đề phản hồi http.

1

curl I http : //your-domain.com

Screenshot_51

Hãy xem tiêu đề X-FastCGI-Cache . HIT cho biết phản hồi đã được phục vụ từ bộ đệm.

2.5. Bước 5: Cấu hình loại trừ cache

Phiên đăng nhập , cookie POST request , chuỗi truy vấn , back-end WordPress , sitemap , Feed …. không nên được lưu giữ trong bộ đệm. Để tắt bộ đệm ẩn cho các mục trên, hãy tạo file /etc/nginx/custom/nginx-cache.conf

1
2

mkdir p / etc / nginx / custom
nano / etc / nginx / customnginx cache . conf

Dán nội dung sau vào file

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

set $ skip _ cache 0 ;
 
# POST requests and urls with a query string should always go to PHP
if ( $ request_method = POST ) {
     set $ skip _ cache 1 ;
}
if ( $ query_string != “” ) {
     set $ skip _ cache 1 ;
}
 
# Don't cache uris containing the following segments
if ( $ request_uri ~ * “/wp-admin/|/xmlrpc.php|wp-.*.php|^/feed/*|/tag/.*/feed/*|index.php|/.*sitemap.*.(xml|xsl)” ) {
     set $ skip _ cache 1 ;
}
 
# Don't use the cache for logged in users or recent commenters
if ( $ http_cookie ~ * “comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in” ) {
     set $ skip _ cache 1 ;
}

Screenshot_49

Sau đó mở file Server Block (Vhost) của bạn và thêm phía trên dòng Location ~.php$

1

include / etc / nginx / customnginx cache . conf ;

Tiếp theo trong section  ~.php$  thêm vào các cấu hình sau.

1
2

fastcgi_cache _ bypass $ skip_cache ;
fastcgi_no _ cache $ skip_cache ;

Screenshot_50 - Cài đặt Nginx FastCGI Cache

Lưu tệp và tải lại Nginx để cấu hình có hiệu lực.

1

service nginx reload

2.5. Bước 5: Cấu hình tự động xóa bộ nhớ cache với WordPress

Đầu tiên, bạn phải cài đặt và kích hoạt plugin Nginx Cache trên trang web WordPress của bạn. Nếu chưa biết cách cài đặt plugins cho WordPress hãy xem Hướng dẫn cài đặt plugins cho wordpress. Sau khi cài đặt và kích hoạt plugins  truy cập Tools -> Nginx Cache và cấu hình plugins

Screenshot_54 - Cài đặt Nginx FastCGI Cache

  • Cache Zone Path : Đường dẫn tới thư mục lưu cache
  • Purge Cache : Tự động xoá cache khi có thay đổi về nội dung

Bây giờ bạn có thể sửa đổi một trong những bài viết của mình để xem liệu bộ đệm có được tự động xóa hay không.

3. Kết luận

Qua bài viết này PCI đã chỉ 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. Nếu có bất kỳ quan điểm đóng góp nào các bạn cũng đều có thể dể lại bình luận ở bên dưới.

Bài viết (post) Cài đặt Nginx FastCGI Cache để giảm thời gian phản hồi của máy chủ WordPress được tổng hợp và biên tập bởi: suamaytinhpci.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho suamaytinhpci.com để điều chỉnh. suamaytinhpci.com xin cảm ơn.

Xếp Hạng