Cập nhật lần cuối: 2025/02/27 13:29:44
Proxy Protocol là gì?
Proxy Protocol là một chuẩn do HAProxy phát triển, giúp Load Balancer gửi thêm thông tin IP nguồn (client IP) và port nguồn đến backend server theo một format đặc biệt. Backend server có thể đọc được thông tin này và sử dụng nó thay vì IP của Load Balancer.
X-Forwarded-For
.nginx -V 2>&1
| grep -- 'http_realip_module'
Trên các server backend, mở file cấu hình (/etc/nginx/nginx.conf
hoặc /etc/nginx/sites-available/default
) và sửa như sau:
http {
# Bật Real IP module cho Proxy Protocol
http {
# Chỉ định Load Balancer IP
set_real_ip_from 192.168.1.10; # Địa chỉ IP của Load Balancer
real_ip_header proxy_protocol; #Chỉ định lấy IP thật từ Proxy Protocol.
log_format custom_log '$proxy_protocol_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log custom_log; #Dùng $proxy_protocol_addr
để ghi lại IP thực vào log thay vì IP của Load Balancer.Ghi log truy cập vào /var/log/nginx/access.log
với format đã tùy chỉnh.
server {
listen 80 proxy_protocol;
listen [::]:80 proxy_protocol;
server_name example.com;
location / {
proxy_set_header X-Real-IP $proxy_protocol_addr; #Thiết lập header X-Real-IP
bằng IP thật của client.
proxy_set_header X-Forwarded-For $proxy_protocol_addr; # Thiết lập header X-Forwarded-For
để backend server nhận được chuỗi IP đầy đủ từ client.
proxy_pass http://backend_server; #
}
}
}
Kiểm tra lại cấu hình và restart lại nginx:
nginx -t
systemctl restart nginx
curl -H "X-Forwarded-For: 1.2.3.4" http://example.com -v
Kiểm tra trong log Nginx
tail -f /var/log/nginx/access.log
Điều khoản & Chính sách