本节将介绍七层监听器如何获取访问负载均衡服务的客户端源IP地址。
负载均衡的七层监听器(HTTP/HTTPS协议)通过对后端服务器进行配置,可以使用X-Forwarded-For方式获取来访者的真实IP地址。
真实的来访者IP会被负载均衡放在HTTP头部的X-Forwarded-For字段,字段中的第一个地址就是来访者真实IP。
后端服务器已安装相关软件,如Nginx、Apache等。
回显如下图所示,表示Nginx配置文件路径为“/etc/nginx/nginx.conf”。find / -name nginx.conf
cd /etc/nginx cp nginx.conf nginx.conf.bak vi nginx.conf
i
进入编辑模式,在以下server配置信息后添加新的配置字段和信息。需要添加的配置字段和信息:server { listen 80; server_name localhost;
set_real_ip_from 100.64.0.0/10; real_ip_header X-Forwarded-For;
说明
您可以将代理服务器的网段添加到 set_real_ip_from <IP_cidr>
,以便获取代理服务器的IP地址。例如,添加负载均衡的IP地址段(100.64.0.0/10是负载均衡服务的保留地址,其他用户无法分配到该网段内,不会存在安全风险)。多个IP地址段之间使用逗号分隔。
ESC
退出编辑模式,输入:wq
保存并退出文件。systemctl restart nginx.service
回显如下图所示,表示Nginx访问日志文件的路径为“/var/log/nginx/access.log”。find / -name access.log
cat /var/log/nginx/access.log
回显如下图所示,表示Apache配置文件路径为“/etc/httpd/conf/httpd.conf”。httpd -V
vi /etc/httpd/conf/httpd.conf
i
进入编辑模式,修改日志格式并在文件末尾添加相关配置信息。
LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined //在原内容中添加配置%{X-Forwarded-For}i CustomLog "logs/access_log" common //去掉此行配置前的注释符#
LoadModule remoteip_module modules/mod_remoteip.so RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 100.64.0.0/10
说明
您可以将代理服务器的网段添加到 RemoteIPInternalProxy <IP_cidr>,以便获取代理服务器的IP地址。例如,添加负载均衡的IP地址段(100.64.0.0/10是负载均衡服务的保留地址,其他用户无法分配到该网段内,不会存在安全风险)。多个IP地址段之间使用逗号分隔。
ESC
退出编辑模式,输入:wq
保存并退出文件。systemctl restart httpd
cat /etc/httpd/logs/access_log