Varnish (tên đầy đủ là Varnish Cache) là một phần mềm HTTP reverse proxy và cache HTTP accelerator – nghĩa là nó được đặt phía trước máy chủ web (như Apache, Nginx) để lưu trữ tạm (cache) các nội dung web, giúp giảm tải và tăng tốc độ phục vụ người dùng.
Varnish là một lớp trung gian tăng tốc website bằng cách cache dữ liệu động thành tĩnh.
Tính năng | Mô tả |
---|---|
🚀 Tăng tốc độ tải trang | Giảm thời gian phản hồi bằng cách trả dữ liệu cache |
🧠 Giảm tải server gốc | Ít request phải đi đến web server thật |
⚙️ Tùy biến mạnh | Sử dụng VCL (Varnish Configuration Language) để cấu hình logic cache |
📊 Quản lý cache dễ | Có thể xóa, kiểm soát từng phần cache theo URL, Cookie, Header... |
Dưới đây là hướng dẫn cài đặt và cấu hình Varnish hoạt động với Nginx (giả sử bạn đang dùng Linux Ubuntu/Debian hoặc tương đương):
Client ⇄ Varnish (port 80) ⇄ Nginx (port 8080) ⇄ PHP/MySQL
sudo apt update
sudo apt install varnish
sudo nano /etc/nginx/sites-available/default
listen 80;
➡️ Thành:
listen 8080;
Sau đó reload Nginx:
sudo systemctl reload nginx
Ubuntu/Debian (>= 18.04):
sudo nano /etc/systemd/system/multi-user.target.wants/varnish.service
Tìm dòng:
ExecStart=/usr/sbin/varnishd ...
➡️ Đổi thành ví dụ sau:
ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -b localhost:8080 -s malloc,512m
-a :80
: Varnish lắng nghe ở port 80-b localhost:8080
: Backend là Nginx ở cổng 8080-s malloc,512m
: Dùng RAM để cache với 512MB
sudo systemctl daemon-reexec
sudo systemctl restart varnish
http://yourdomain.com
curl -I http://yourdomain.com
Bạn sẽ thấy một vài header như:
X-Varnish: 12345
Via: 1.1 varnish (Varnish/7.0)
📌 Nếu có X-Varnish
, nghĩa là request đã qua proxy Varnish.
Nếu bạn muốn dùng lại Nginx ở port 80:
sudo systemctl stop varnish
sudo nano /etc/nginx/sites-available/default
# đổi lại listen 80
sudo systemctl restart nginx
Để xem request có được cache hay không:
curl -I http://yourdomain.com
Xem header:
Header | Ý nghĩa |
---|---|
X-Cache: HIT | Trang được lấy từ cache |
X-Cache: MISS | Trang lấy từ Nginx (và có thể sẽ được cache cho lần sau) |