- 1. Hướng dẫn cài đặt Varnish cho Nginx/Apache trên CentOS/Ubuntu
- 2. Varnish Agent – Công cụ quản lý và Theo dõi Varnish
- 3. Varnish Dashboard – Theo dõi Varnish trực quan, realtime
- 4. Cấu hình Varnish hoạt động với CloudFlare và Nginx
- 5. Cấu hình Varnish hoạt động trên 2 port khác nhau
- 6. Sử dụng HTTPS với Varnish
Nếu bạn sử dụng HocVPS Script, bên cạnh port 80, mình còn để Nginx listen thêm một port admin nữa, mặc định là 2313. Listen port 80 thì đơn giản rồi, tuy nhiên, làm thế nào để Varnish listen thêm một port khác nữa và connect với backend thì là vấn đề khác.
Nhân dịp có bạn viết comment hỏi về việc để Varnish listen thêm port, mình có mày mò và viết lại bài hướng dẫn này cho các bạn đang cần sử dụng.
Lưu ý: nếu bạn không muốn mày mò mất thời gian, hãy dùng thẳng IP gốc + port là đủ.
Hướng dẫn cấu hình Varnish hoạt động trên nhiều port
Trong bài viết này, mình sẽ hướng dẫn cấu hình để Varnish listen trên 2 port là 80
và 2313
. Khi có truy cập sẽ kết nối với backend 127.0.0.1 với port 8080
và 2313
. Lưu ý trường hợp này đặc biệt ở chỗ Varnish và Nginx cùng listen trên port 2313 nhé. Giả sử IP server là 11.22.33.44
.
– Đầu tiên bạn cấu hình Varnish listen trên 2 port là 80
và 2313
bằng cách mở file cấu hình tham số Varnish
nano /etc/sysconfig/varnish
Kéo xuống dưới cùng, chuyển tham số:
DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \
thành
DAEMON_OPTS="-a :80,11.22.33.44:2313 \
Bạn cần add thêm IP server vào port 2313 để phân biệt với Nginx cũng listen port 2313, trên host là 127.0.0.1.
– Tiếp theo, mở file VCL mặc định:
nano /etc/varnish/default.vcl
Thêm đoạn cấu hình port admin bên dưới backend default
:
backend default { .host = "127.0.0.1"; .port = "8080"; } backend admin { .host = "127.0.0.1"; .port = "2313"; }
Sau đó quy định rule khi nào thì sử dụng cấu hình backend default
hoặc admin
trong sub vcl_recv
, ví dụ:
sub vcl_recv { # Default backend is set to default set req.backend_hint = default; if (req.http.host == "example.com:2313") { set req.backend_hint = admin; }
– Restart Varnish và Nginx
service nginx restart service varnish restart
Vậy là xong, tận hưởng thành quả thôi.
Chúc bạn thành công.
Mình đang cài Nginx để làm proxy cho apache.
Apache đang listen port 8080
NGINX listen port 80.
Vậy nếu muốn cài thêm Varnish cache nữa thì phải làm thế nào nhỉ?
Bạn cho Varnish (80) –> Nginx (8082) –> Apache (8080)
Thank b. Vậy nếu cài Varnish Cache thì nó sẽ đc apply cho toàn bộ các project trên sv b nhỉ?
Nếu mình muốn chỉ apply varnish cache cho 1 repo nào đó liệu có được ko?
Mình chưa thử tách biệt như vậy nên không rõ rồi. Bạn thử xem
Hi bạn .
Mình có vps cài eassyengine, chạy cả magento2 lẫn wp. Bạn chỉ mình cách cấu hình chung cho cả 2 đc ko? Hoặc dùng 2 file cấu hình cho mỗi loại site đc ko? Kiểu như vhosst ấy. Nếu truy cập domain a chạy wp thì dubgf file domainA.vlc, truy cập domainB magento thì dùng file DomainB.vlc.
Cám ơn bạn.
Cho mình hỏi thêm là vps chạy nginx php7 zend opcodecache, redis cache. Có nên thêm varnish nữa ko nhỉ? Chạy magento2+wp.
Bạn tạo ra các file config cho từng site dạng thế này nhé
if (req.http.host == “wp.com”) {
include “wp-recv.vcl”;
} else if (req.http.host == “mg.com”) {
include “mg-recv.vcl”;
} else {
include “df-recv.vcl”;
}
Làm thử đi được thì báo lại nhé. Vấn đề chung cho multisite
Luân ơi muốn cấu hình SSL qua Varnish sao vậy, mình cấu hình theo cái này mà nó không qua
SSL với Varnish thì mình chưa tìm hiểu rồi.
Luân ơi,
vậy mình cấu hình Varnish port 80 và 443 được ko?
Anh ơi trong trường hợp mà mình có nhiều site trên cùng 1 VPS muốn cho chúng nó cùng được dùng Varnish thì sao hả anh? Em có làm thử những vẫn lỗi, chạy riêng VPS thì được chứ cứ chung vào là lỗi.
Cái này áp dụng khi bạn sử dụng nhiều port, ví dụ như bạn dùng nginx làm proxy mà vẫn muốn thông qua varnish cache nữa. Còn nhiều site thì vẫn chỉ áp dụng varnish cơ bản thôi, cấu hình đúng 1 port là 8080 thôi