Varnish Cache là một proxy HTTP ngược mạnh mẽ được sử dụng để tăng tốc các ứng dụng web có sẵn dưới dạng phần mềm Nguồn mở. Varnish lưu trữ đệm cả nội dung tĩnh và động. Nó xử lý tất cả các yêu cầu đến trước khi chúng đến máy chủ web của bạn. Nó nằm giữa trình duyệt web và máy chủ web Apache hoặc Nginx. Bộ nhớ đệm Varnish lưu trữ tất cả các yêu cầu trang đến trong bộ nhớ để máy chủ web không phải tạo cùng một trang web nhiều lần.
Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách cài đặt bộ nhớ đệm Varnish với Apache và Nginx trên CentOS 8.
Sau khi tất cả các gói được cập nhật, bạn có thể tiến hành bước tiếp theo.
Sau khi cài đặt Varnish, hãy chỉnh sửa tệp cấu hình mặc định của Varnish và xác định địa chỉ được Nginx hoặc Apache webserver hỗ trợ.
Thay đổi các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất.
Tìm dòng sau:
Thay thế bằng dòng sau:
Lưu và đóng tệp, sau đó tải lại daemon systemd để áp dụng thay đổi:
Tiếp theo, khởi động 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ể kiểm tra trạng thái của Varnish bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Tại thời điểm này, Varnish đã được khởi động và lắng nghe trên cổng 80. Bạn có thể kiểm tra bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Tại thời điểm này, Varnish đã được cài đặt và cấu hình. Bây giờ bạn có thể tiến hành bước tiếp theo.
Sau khi cài đặt, bạn sẽ cần thay đổi cổng lắng nghe Nginx từ 80 thành 8080. Bạn có thể thực hiện bằng cách chỉnh sửa tệp cấu hình mặc định của Nginx:
Thay đổi các dòng sau:
Lưu và đóng tệp, sau đó xác minh Nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Tiếp theo, 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ạn cũng có thể xác minh cổng lắng nghe Nginx bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Tại thời điểm này, bộ đệm Varnish được cài đặt và cấu hình để chuyển tiếp tất cả các yêu cầu đến từ cổng 80 đến máy chủ web Nginx đang lắng nghe trên cổng 8080.
Bạn có thể xác minh xem bộ đệm Varnish có hoạt động hay không bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Sau khi cài đặt Apache, hãy chỉnh sửa tệp cấu hình mặc định của Apache và thay đổi cổng lắng nghe từ 80 thành 8080.
Thay đổi dòng sau:
Lưu và đóng tệp, sau đó khởi động dịch vụ Apache và cho phép dịch vụ này 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 cổng lắng nghe của Apache bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Tại thời điểm này, bộ đệm Varnish đã được cài đặt và cấu hình để chuyển tiếp tất cả các yêu cầu đến từ cổng 80 đến máy chủ web Apache đang lắng nghe trên cổng 8080.
Bạn có thể xác minh xem bộ đệm Varnish có hoạt động hay không bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
varnishadm là một tiện ích dòng lệnh được sử dụng để liệt kê các backend đã cấu hình.
Bạn sẽ thấy đầu ra sau:
Bây giờ, hãy chạy lệnh sau để liệt kê tất cả các chương trình phụ trợ:
Bạn sẽ thấy kết quả đầu ra sau:
varnishlog
Tiện ích varnishlog được sử dụng để hiển thị nhật ký của tất cả các yêu cầu của người dùng.
Bạn sẽ nhận được kết quả đầu ra sau:
varnishstat
Lệnh varnishstat cung cấp cho bạn thông tin về số liệu thống kê trong bộ nhớ, dung lượng lưu trữ, luồng đã tạo và các đối tượng đã xóa.
Bạn sẽ thấy màn hình sau:
varnishtop
Lệnh varnishtop đọc các nhật ký bộ nhớ dùng chung của varnishd và hiển thị danh sách liên tục được cập nhật về các mục nhật ký thường gặp nhất.
Bạn sẽ thấy màn hình sau:
varnishhist
Varnishhist phân tích các nhật ký varnish và in n yêu cầu cuối cùng theo quá trình xử lý của chúng.
Bạn sẽ thấy màn hình sau:
Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách cài đặt bộ nhớ đệm Varnish với Apache và Nginx trên CentOS 8.
Đ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 trên máy chủ của bạn.
Bắt đầu
Trước khi bắt đầu, bạn nên cập nhật các gói hệ thống của mình lên phiên bản mới nhất. Bạn có thể cập nhật chúng bằng cách chạy lệnh sau:
Mã:
dnf update -y
Cài đặt Varnish
Theo mặc định, gói Varnish được bao gồm trong kho lưu trữ mặc định của CentOS 8. Bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
dnf install varnish -y
Mã:
nano /etc/varnish/default.vcl
Mã:
backend default { .host = "127.0.0.1"; .port = "8080";}
Cấu hình Varnish
Theo mặc định, Varnish lắng nghe trên cổng 6081. Vì vậy, bạn sẽ cần cấu hình Varnish để lắng nghe trên cổng 80. Bạn có thể cấu hình bằng cách chỉnh sửa tệp varnish.service:
Mã:
nano /lib/systemd/system/varnish.service
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
Mã:
systemctl daemon-reload
Mã:
systemctl start varnish
systemctl 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 (/usr/lib/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ứ sáu 2021-03-12 04:17:32 EST; 4 giây trước Tiến trình: 6391 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) PID chính: 6392 (varnishd) Nhiệm vụ: 217 Bộ nhớ: 99,5M CGroup: /system.slice/varnish.service ??6392 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??6402 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m12-03 04:17:32 masternode systemd[1]: Đang khởi động Varnish Cache, một trình tăng tốc HTTP hiệu suất cao...12-03 04:17:32 masternode varnishd[6391]: Gỡ lỗi: Phiên bản: varnish-6.0.6 bản sửa đổi 29a1a8243dbef3d973aec28dc90403188c1dc8e712-03 04:17:32 masternode varnishd[6391]: Gỡ lỗi: Nền tảng: Linux, 4.18.0-193.6.3.el8_2.x86_64, x86_64, -junix, -smalloc, -sdefault, -hcritbit12-03 04:17:32 masternode varnishd[6392]: Phiên bản: varnish-6.0.6 bản sửa đổi 29a1a8243dbef3d973aec28dc90403188c1dc8e712-03 04:17:32 masternode varnishd[6392]: Nền tảng: Linux, 4.18.0-193.6.3.el8_2.x86_64, x86_64, -junix, -smalloc, -sdefault, -hcritbit12-03 04:17:32 masternode varnishd[6391]: Gỡ lỗi: Child (6402) Đã bắt đầu12-03 04:17:32 masternode varnishd[6392]: Child (6402) Đã bắt đầu12-03 04:17:32 masternode varnishd[6392]: Child (6402) đã nói Child bắt đầu12-03 04:17:32 masternode systemd[1]: Đã bắt đầu Varnish Cache, một trình tăng tốc HTTP hiệu suất cao.
Mã:
ss -antpl | grep varnishd
Mã:
LISTEN 0 10 127.0.0.1:34977 0.0.0.0:* users:(("varnishd",pid=1532,fd=11))LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("cache-main",pid=1542,fd=6),("varnishd",pid=1532,fd=6))LISTEN 0 128 [::]:80 [::]:* users:(("cache-main",pid=1542,fd=7),("varnishd",pid=1532,fd=7))LISTEN 0 10 [::1]:34909 [::]:* users:(("varnishd",pid=1532,fd=10))
Cài đặt và cấu hình Nginx để hoạt động với Varnish
Trước tiên, bạn sẽ cần cài đặt gói Nginx vào máy chủ của mình. Bạn có thể cài đặt gói này bằng lệnh sau:
Mã:
dnf install nginx -y
Mã:
nano /etc/nginx/nginx.conf
Mã:
listen 8080 default_server; listen [::]:8080 default_server;
Mã:
nginx -t
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: kiểm tra tệp cấu hình /etc/nginx/nginx.conf thành công
Mã:
systemctl start nginx
systemctl enable nginx
Mã:
ss -antpl | grep 8080
Mã:
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("nginx",pid=5569,fd=8),("nginx",pid=5568,fd=8))LISTEN 0 128 [::]:8080 [::]:* users:(("nginx",pid=5569,fd=9),("nginx",pid=5568,fd=9))
Bạn có thể xác minh xem bộ đệm Varnish có hoạt động hay không bằng lệnh sau:
Mã:
curl -I http://localhost
Mã:
HTTP/1.1 200 OKMáy chủ: nginx/1.14.1Ngày: Thứ sáu, 12 tháng 3 năm 2021 09:18:32 GMTContent-Type: text/htmlContent-Length: 4057Lần sửa đổi cuối: Thứ hai, 07 tháng 10 năm 2019 21:16:24 GMTETag: "5d9bab28-fd9"X-Varnish: 2Tuổi: 0Via: 1.1 varnish (Varnish/6.0)Accept-Ranges: bytesConnection: keep-alive
Cài đặt và cấu hình Apache để hoạt động với Varnish
Trước tiên, bạn sẽ cần cài đặt gói máy chủ web Apache vào hệ thống của mình. Bạn có thể cài đặt nó bằng lệnh sau:
Mã:
dnf install httpd -y
Mã:
nano /etc/httpd/conf/httpd.conf
Mã:
Listen 8080
Mã:
systemctl start httpd
systemctl enable httpd
Mã:
ss -antpl | grep httpd
Mã:
LISTEN 0 128 *:8080 *:* users:(("httpd",pid=7556,fd=4),("httpd",pid=7555,fd=4),("httpd",pid=7554,fd=4),("httpd",pid=7552,fd=4))
Bạn có thể xác minh xem bộ đệm Varnish có hoạt động hay không bằng lệnh sau:
Mã:
curl -I http://localhost
Mã:
Ngày: Thứ sáu, ngày 12 tháng 3 năm 2021 09:21:14 GMTMáy chủ: Apache/2.4.37 (centos)Vị trí nội dung: index.html.zh-CNVary: negotiation,accept-languageTCN: choiceLần sửa đổi cuối: Thứ sáu, ngày 14 tháng 6 năm 2019 03:37:43 GMTETag: "fa6-58b405e7d6fc0;5bd5365602e05"Phạm vi chấp nhận: byteĐộ dài nội dung: 4006Loại nội dung: text/html; charset=UTF-8Content-Language: zh-cnX-Varnish: 2Age: 0Via: 1.1 varnish (Varnish/6.0)Connection: keep-alive
Làm việc với Varnish Command Line
Varnish đi kèm với một số tiện ích hữu ích giúp bạn theo dõi và kiểm soát Varnish.varnishadm là một tiện ích dòng lệnh được sử dụng để liệt kê các backend đã cấu hình.
Mã:
varnishadm
Mã:
200-----------------------------Varnish Cache CLI 1.0-----------------------------Linux, 4.18.0-193.6.3.el8_2.x86_64, x86_64, -junix, -smalloc, -sdefault, -hcritbitvarnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7Gõ 'help' để biết danh sách lệnh.Gõ 'quit' để đóng phiên CLI.
Mã:
varnish> backend.list
Mã:
200Tên backend Admin Probe Lần cập nhật cuốiboot.default probe Healthy (không có probe) Sat, 13 Mar 2021 03:00:02 GMT
Tiện ích varnishlog được sử dụng để hiển thị nhật ký của tất cả các yêu cầu của người dùng.
Mã:
varnishlog
Mã:
* > 6- Bắt đầu bereq 5 fetch- VCL_use boot- Dấu thời gian Bắt đầu: 1615604631.507187 0.000000 0.000000- BereqMethod GET- BereqURL /- BereqProtocol HTTP/1.1- BereqHeader Host: 69.87.218.214- BereqHeader Upgrade-Insecure-Requests: 1- BereqHeader User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, như Gecko) Chrome/87.0.4280.141 Safari/537.36- BereqHeader Chấp nhận: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9- BereqHeader Accept-Language: en-GB,en-US;q=0.9,en;q=0.8- BereqHeader X-Forwarded-For: 106.213.193.241- BereqHeader Accept-Encoding: gzip- BereqHeader X-Varnish: 6- VCL_call BACKEND_FETCH- VCL_return fetch- BackendOpen 31 boot.default 127.0.0.1 8080 127.0.0.1 58860- BackendStart 127.0.0.1 8080- Dấu thời gian Bereq: 1615604631.507458 0,000270 0,000270- Dấu thời gian Bersp: 1615604631.507844 0.000657 0.000386- Giao thức Beresp HTTP/1.1- Trạng thái Beresp 200- BerespLý do OK- Máy chủ BerespHeader: nginx/1.14.1- Ngày tiêu đề đầu tiên: Thứ bảy, ngày 13 tháng 3 năm 2021 03:03:51 GMT- Loại nội dung BerespHeader: text/html- Độ dài nội dung BerespHeader: 4057- BerespHeader Sửa đổi lần cuối: Thứ Hai, ngày 07 tháng 10 năm 2019 21:16:24 GMT
Lệnh varnishstat cung cấp cho bạn thông tin về số liệu thống kê trong bộ nhớ, dung lượng lưu trữ, luồng đã tạo và các đối tượng đã xóa.
Mã:
varnishstat
varnishtop
Lệnh varnishtop đọc các nhật ký bộ nhớ dùng chung của varnishd và hiển thị danh sách liên tục được cập nhật về các mục nhật ký thường gặp nhất.
Mã:
varnishtop
varnishhist
Varnishhist phân tích các nhật ký varnish và in n yêu cầu cuối cùng theo quá trình xử lý của chúng.
Mã:
varnishhist