Cách cài đặt và thiết lập Varnish Cache 6 với Nginx trên CentOS 8

theanh

Administrator
Nhân viên
Varnish Cache là trình tăng tốc HTTP proxy ngược miễn phí và mã nguồn mở dành cho các trang web và API. Nó có thể được cài đặt như một proxy ngược trước bất kỳ máy chủ web nào chạy trên HTTP. Nó nằm giữa máy chủ web và trình duyệt và lưu các trang web, cookie và dữ liệu khác vào bộ nhớ. Bộ nhớ đệm này sẽ được sử dụng để phục vụ tất cả các yêu cầu trong tương lai cho nội dung hoàn toàn giống nhau. Điều này sẽ làm tăng tải ứng dụng web và cải thiện hiệu suất máy chủ web lên hơn 300 lần.

Trong hướng dẫn này, chúng ta sẽ thiết lập máy chủ Nginx làm máy chủ phụ trợ và cấu hình để lắng nghe trên cổng 8080, sau đó cấu hình bộ đệm Varnish để lắng nghe trên cổng HTTP mặc định 80.

Điều kiện tiên quyết​

  • Máy chủ chạy CentOS 8.
  • Mật khẩu gốc được cấu hình cho máy chủ.

Cài đặt và cấu hình máy chủ web Nginx​

Đầu tiên, bạn sẽ cần cài đặt máy chủ web Nginx trong hệ thống của mình. Bạn có thể cài đặt bằng lệnh sau:
Mã:
dnf install nginx -y
Sau khi cài đặt, hãy khởi động dịch vụ Nginx và cho phép nó khởi động khi khởi động lại hệ thống bằng lệnh sau:
Mã:
systemctl start nginx
systemctl enable nginx
Theo mặc định, Nginx đang lắng nghe trên cổng 80. Vì vậy, bạn sẽ cần cấu hình Nginx để lắng nghe trên cổng 80. Bạn có thể cấu hình nó bằng cách chỉnh sửa tệp cấu hình mặc định của Nginx:
Mã:
nano /etc/nginx/nginx.conf
Tìm các dòng sau:
Mã:
listen 80 default_server; listen [::]:80 default_server;
Và thay thế chúng bằng các dòng sau:
Mã:
listen 8080 default_server; listen [::]:8080 default_server;
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, khởi động lại dịch vụ Nginx để áp dụng các thay đổi:
Mã:
systemctl restart nginx
Tại thời điểm này, máy chủ web Nginx đã được cài đặt và đang lắng nghe trên cổng 8080. Bạn có thể kiểm tra bằng lệnh sau:
Mã:
netstat -tpln | grep 8080
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: mastertcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master

Cài đặt Varnish Cache​

Theo mặc định, gói Varnish có sẵn trong kho lưu trữ mặc định của CentOS 8. Bạn có thể cài đặt bằng cách chỉ cần chạy lệnh sau:
Mã:
dnf module install varnish
Sau khi cài đặt, hãy khởi động dịch vụ Varnish bằng lệnh sau:
Mã:
systemctl start varnish
Bạn cũng có thể xác minh phiên bản bộ đệm Varnish đã cài đặt bằng lệnh sau:
Mã:
varnishd -V
Bạn sẽ thấy đầu ra sau:
Mã:
varnishd (varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91)Bản quyền (c) 2006 Verdens Gang ASBản quyền (c) 2006-2018 Varnish Software AS

Cấu hình Varnish cho Nginx​

Tiếp theo, bạn sẽ cần cấu hình varnish để chạy trên cổng 80 để nhận yêu cầu HTTP từ máy khách. Bạn có thể cấu hình bằng cách chỉnh sửa tệp cấu hình mặc định của Varnish:
Mã:
systemctl edit --full varnish
Tìm dòng sau:
Mã:
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
Và thay thế bằng dòng sau:
Mã:
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Lưu và đóng tệp khi bạn hoàn tất.

Tiếp theo, bạn sẽ cần xác định máy chủ phụ trợ cho Varnish. Bạn có thể thực hiện bằng cách chỉnh sửa tệp cấu hình chính Varnish /etc/varnish/default.vcl:
Mã:
nano /etc/varnish/default.vcl
Thay đổi các dòng sau:
Mã:
backend myserver { .host = "127.0.0.1"; .port = "8080";}
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, tải lại daemon systemd bằng lệnh sau:
Mã:
systemctl daemon-reload
Tiếp theo, khởi động lại dịch vụ Varnish và cho phép nó khởi động khi khởi động lại hệ thống bằng lệnh sau:
Mã:
systemctl restart varnish
systemcl enable varnish
Bạn cũng có thể xác minh trạng thái của Varnish bằng lệnh sau:
Mã:
systemctl status varnish
Bạn sẽ nhận được kết quả sau:
Mã:
? varnish.service - Varnish Cache, một trình tăng tốc HTTP hiệu suất cao Đã tải: đã tải (/etc/systemd/system/varnish.service; đã tắt; cài đặt trước của nhà cung cấp: đã tắt) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ bảy, ngày 29 tháng 8 năm 2020 lúc 09:36:58 EDT; 12 giây trước Tiến trình: 30421 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) PID chính: 30424 (varnishd) Nhiệm vụ: 217 Bộ nhớ: 91,8M CGroup: /system.slice/varnish.service ??30424 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??30434 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m29 tháng 8 09:36:57 centos8 systemd[1]: Đang khởi động Varnish Cache, một trình tăng tốc HTTP hiệu suất cao...29 tháng 8 09:36:58 centos8 varnishd[30421]: Gỡ lỗi: Phiên bản: varnish-6.0.2 bản sửa đổi 0458b54db26cfbea79af45ca5c4767c7c2925a9129 tháng 8 09:36:58 centos8 varnishd[30421]: Gỡ lỗi: Nền tảng: Linux, 4.18.0-193.6.3.el8_2.x86_64, x86_64, -junix, -smalloc, -sdefault, -hcritbit29 tháng 8 09:36:58 centos8 varnishd[30424]: Phiên bản: varnish-6.0.2 bản sửa đổi 0458b54db26cfbea79af45ca5c4767c7c2925a9129 tháng 8 09:36:58 centos8 varnishd[30424]: Nền tảng: Linux, 4.18.0-193.6.3.el8_2.x86_64, x86_64, -junix, -smalloc, -sdefault, -hcritbit29 tháng 8 09:36:58 centos8 varnishd[30421]: Gỡ lỗi: Child (30434) Đã bắt đầu29 tháng 8 09:36:58 centos8 varnishd[30424]: Child (30434) Đã bắt đầu29 tháng 8 09:36:58 centos8 varnishd[30424]: Child (30434) đã nói Child bắt đầu29 tháng 8 09:36:58 centos8 systemd[1]: Đã bắt đầu Varnish Cache, một trình tăng tốc HTTP hiệu suất cao.
Bây giờ bạn có thể xác minh cổng lắng nghe của Nginx và Varnish bằng lệnh sau lệnh:
Mã:
netstat -tpln | grep 80
Bạn sẽ thấy đầu ra sau:
Mã:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 30424/varnishdtcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: mastertcp6 0 0 :::80 :::* LISTEN 30424/varnishdtcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master

Cấu hình SELinux và Tường lửa​

Theo mặc định, SELinux được bật trong CentOS 8. Vì vậy, bạn sẽ cần cấu hình SELinux cho Varnish. Bạn có thể cấu hình nó bằng lệnh sau:
Mã:
setsebool -P httpd_can_network_connect 1
Tiếp theo, bạn sẽ cần cho phép cổng 80 đi qua firewalld. Bạn có thể thực hiện bằng lệnh sau:
Mã:
firewall-cmd --permanent --zone public --add-port 80/tcp
firewall-cmd --reload
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Kiểm tra Varnish Cache​

Tại thời điểm này, Varnish cache đã được cài đặt và cấu hình với máy chủ web Nginx. Bây giờ, đã đến lúc kiểm tra xem bộ nhớ đệm Varnish có hoạt động hay không.

Bạn có thể kiểm tra bằng lệnh curl như hiển thị bên dưới:
Mã:
curl -I http://localhost
Bạn sẽ thấy kết quả sau:
Mã:
HTTP/1.1 200 OKMáy chủ: nginx/1.14.1Ngày: Thứ bảy, ngày 29 tháng 8 năm 2020 13:53:44 GMTContent-Type: text/html; charset=UTF-8X-Powered-By: PHP/7.2.24X-Varnish: 32800Tuổi: 0Via: 1.1 varnish (Varnish/6.0)Accept-Ranges: bytesConnection: keep-alive

Kết luận​

Xin chúc mừng! bạn đã cài đặt thành công Varnish Cache với Nginx trên CentOS 8. Tôi hy vọng bạn cũng có thể cấu hình Varnish Cache với máy chủ web Apache một cách dễ dàng. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên