Config protocol Proxy with member Nginx
Last updated
Last updated
Địa chỉ
VNG CorporationProtocol Proxy là một protocol đặc thù cho phép Load Balanacer chuyển tiếp thông tin kết nối của end-user (client connection information) đến các Member servers. Từ đó các Member Servers sẽ có thông tin để cấu hình các tính năng nâng cao như Rate-limit by IP, GeoIP, thống kê log access của client,.... Để sử dụng Protocol Proxy, bạn cần tạo vLB Layer 4 với Pool Settings là Proxy Protocol, đồng thời Member Server của bạn phải hỗ trợ Protocol Proxy này. Một số Web Server phổ biến đã hỗ trợ Proxy Protocol là Nginx, Apache,... Bài hướng dẫn này sẽ dùng Nginx.
Bước 1: Bạn tạo Pool với Setting là Proxy Protocol:
Bước 2: Trên Nginx server, kiểm tra module proxy protocol http_realip_module đã được cài đặt trước hay chưa bằng command. Nếu chưa, bạn cần install hoặc rebuild nginx từ source với module trên.
* Chú ý: Module này sẽ được install sẵn từ version Ubuntu Bionic Beaver (18.04).
Bước 3: Cấu hình bật Proxy Protocol tại Virtual Host:
+ Cấu hình thêm tham số proxy_protocol tại server {} block:
+ Xác định Load Balancer IP nơi mình nhận traffic Proxy Protocol tại server {} block với cấu hình set_real_ip_from
VD: ở đây IP của vLB đang là 103.245.248.204.
+ Cấu hình thay đổi IP của Load balancer với IP của client, được lấy từ Proxy Protocol Header tại server {} block với cấu hình real_ip_header và tham số proxy_protocol
Bước 4: Cấu hình Header để lấy giá trị xuất log tại http {} block với cấu hình proxy_set_header
Bước 5: Cấu hình Custom log với giá trị Client IP (Optional nếu bạn cần xuất log nginx kèm theo log client ip).
Định nghĩa log_format custom có kèm theo Client IP
Thêm trong block server{} access_log với log_format là custom trên.
Bước 6: Kiểm thử cấu hình và restart nginx để hoàn tất bằng command
Nếu không có errror, bạn tiến hành restart nginx.
Bước 7: Thực hiện gửi request và kiểm tra log ra sẽ thấy IP Client xuất hiện trong log file:
nginx -V 2>&1
| grep -- 'http_realip_module'
set_real_ip_from <Load balancer IP>;
real_ip_header proxy_protocol;
proxy_set_header X-Real-IP $proxy_protocol_addr;
proxy_set_header X-Forwarded-For $proxy_protocol_addr;
nginx -t
systemctl restart nginx