- 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
CloudFlare là một dịch vụ miễn phí tuyệt vời giúp website của bạn tăng tốc lên rất nhiều lần bằng cách hoạt động như một proxy, xử lý tất cả các request đến server.
CloudFlare sẽ nén và cache các nội dung tĩnh như file CSS, JavaScript, hình ảnh và deliver đến người dùng thông qua mạng lưới CDN khổng lồ trên khắp thế giới.
Vì CloudFlare sẽ nhận toàn bộ các request từ người dùng rồi kết nối đến server của bạn, nên khi kiểm tra log file, bạn sẽ thấy toàn bộ các IP nguồn đều là của CloudFlare.
Điều này cũng tương tự khi bạn kết hợp Varnish (làm front end) với Nginx (back end) vậy, toàn bộ IP nguồn lúc này là 127.0.0.1 (localhost).
Trong bài hướng dẫn cài đặt Varnish với Nginx/Apache, mình đã hướng dẫn cấu hình để lấy IP nguồn của visitor. Tuy nhiên, khi kết hợp bộ ba CloudFlare, Varnish và Nginx chúng ta sẽ cần cấu hình khác một chút để có được IP thật của người dùng.
Cấu hình Varnish hoạt động với CloudFlare và Nginx
Đầu tiên, cấu hình để Nginx phân biệt được IP Proxy từ hệ thống CloudFlare và quy định header của IP gốc.
Mở file /etc/nginx/nginx.conf
và thêm đoạn sau vào block http {}
http { set_real_ip_from 204.93.240.0/24; set_real_ip_from 204.93.177.0/24; set_real_ip_from 199.27.128.0/21; set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.22.200.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 108.162.192.0/18; real_ip_header CF-Connecting-IP;
Danh sách này sẽ thường xuyên thay đổi, do đó bạn cần liên tục update từ link chính thức này.
Tiếp theo, để Nginx biết được request được xử lý thông qua proxy là Varnish, chỉ cần thêm 127.0.0.1
vào danh sách proxy trong file nginx.conf
. Cấu hình hoàn chỉnh như sau:
http { set_real_ip_from 204.93.240.0/24; set_real_ip_from 204.93.177.0/24; set_real_ip_from 199.27.128.0/21; set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.22.200.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 108.162.192.0/18; set_real_ip_from 127.0.0.1/32; real_ip_header CF-Connecting-IP;
Đừng quên chỉnh sửa cấu trúc log_format
nữa nhé:
log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
Vậy là xong, restart Nginx bạn sẽ thấy IP gốc của người dùng sẽ xuất hiện trong access.log.
Tham khảo thêm đoạn code cấu hình vcl_recv của Varnish.
Chúc bạn thành công.
Dear Luân
Mình sử dụng hocvps
Trước lúc cài varnish thì mình đang sử dụng cloudflare. Đã làm theo bài 1 Cloudflare báo lỗi 521 không vào được. Mình mới làm tiếp bài này. Mình sử dụng google cloud và đã thêm thủ công port 8080 vào luôn rồi. Kết quả là vẫn chưa vào được
anh ơi sau khi e chèn vào, vào domain nó bị lỗi,
Error 503 Backend fetch failed
Backend fetch failed
Guru Meditation:
XID: 55
Varnish cache server
a xem giúp e cái, mỗi lần f5 thì cái XID lại random số
thêm ipv6 vào được không luân ơi
Vấn đề này mình không rõ rồi
mình config đầy đủ bộ ssl – cloudflare->varnish->nginx->lamp
cache wp-rocket, redis
load web ram 500 nhanh vãi hồn, điểm toàn >95 điểm
cảm ơn tác giả share cách cài đặt
vậy nếu không cần lấy ip thật của người dùng thì không cần làm bước này đúng không admin
Thực ra là nên làm nhé bạn, không có thể có nhiều vấn đề xảy ra, ví dụ CSF tưởng 1 IP đang DDoS hệ thống chẳng hạn.
Theo cảm nhận thì hình như làm xong bài này tốc độ load website chậm hơn bài 1
Không biết có phải vậy không ạ ?
Khi sử dụng thì tốc độ phụ thuộc chính vào CloudFlare, nên cũng tùy bạn ạ. Nhiều lúc đứt cáp mình thấy dùng CF chậm hơn.