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.
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:
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:
Tìm các dòng sau:
Và thay thế chúng bằng các dòng sau:
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:
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:
Bạn sẽ nhận được kết quả đầu ra sau:
Sau khi cài đặt, hãy khởi động dịch vụ Varnish bằng lệnh sau:
Bạn cũng có thể xác minh phiên bản bộ đệm Varnish đã cài đặt bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Tìm dòng sau:
Và thay thế bằng dòng sau:
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:
Thay đổi các dòng sau:
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:
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:
Bạn cũng có thể xác minh trạng thái của Varnish bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
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:
Bạn sẽ thấy đầu ra sau:
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:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Bạn có thể kiểm tra bằng lệnh curl như hiển thị bên dưới:
Bạn sẽ thấy kết quả sau:
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
Mã:
systemctl start nginx
systemctl enable nginx
Mã:
nano /etc/nginx/nginx.conf
Mã:
listen 80 default_server; listen [::]:80 default_server;
Mã:
listen 8080 default_server; listen [::]:8080 default_server;
Mã:
systemctl restart nginx
Mã:
netstat -tpln | grep 8080
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
Mã:
systemctl start varnish
Mã:
varnishd -V
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
Mã:
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
Mã:
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
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
Mã:
backend myserver { .host = "127.0.0.1"; .port = "8080";}
Mã:
systemctl daemon-reload
Mã:
systemctl restart varnish
systemcl enable varnish
Mã:
systemctl status varnish
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.
Mã:
netstat -tpln | grep 80
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
Mã:
firewall-cmd --permanent --zone public --add-port 80/tcp
firewall-cmd --reload
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
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