Cấu hình Varnish hoạt động với CloudFlare và Nginx

Tóm tắt nội dung

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.1và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. Chúc bạn thành công.

Theo hocvps

Logo Cloud Việt

Thông Tin Và Hoạt Động Của Chúng Tôi

Cloud Việt là đơn vị cung cấp dịch vụ TTDL uy tín tại Việt Nam. Với tiêu chí là đặt quyền lợi và trải nghiệm của khách hàng lên hàng đầu để  đem đến dịch vụ tốt nhất.

Trụ sở chính

110/20/41 đường số 30, phường 6, quận Gò Vấp, TPHCM

Ngày làm việc

Thứ 2 - Thứ 6, Hàng tuần

Giờ làm việc

08 : 00 AM - 18 : 00 PM

Email

Support@cloudviet.com.vn

Hotline

0972 710 812