nginx代理后端服务器获取客户端真实ip
方法一:
代理上的配置如下:
[root@7-node1 conf.d]# cat proxy.conf server { listen 80; location / { proxy_pass http://proxy_server_pools; proxy_set_header Host $host; #proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr;#nginx代理添加这条命令就可以了。添加在location下或者http下面 } } upstream proxy_server_pools { server 192.168.7.221 weight=1; server 192.168.7.223 weight=3; }
后端nginx服务器只需要配置日志格式为以下,最后真实ip出现在最后一列。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
方法二:
代理上的配置如下,其实和方法一一样也是可以的,添加了一行,我测试的时候不添加也是可以的。
[root@7-node1 conf.d]# cat proxy.conf server { listen 80; location / { proxy_pass http://proxy_server_pools; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;#这一行加不加都可以,测试过了。 proxy_set_header X-Forwarded-For $remote_addr;#nginx代理添加这条命令就可以了。添加在location下或者http下面 } } upstream proxy_server_pools { server 192.168.7.221 weight=1; server 192.168.7.223 weight=3; }
后端配置: 在http模块下添加以下两行就可以,最后真实ip就会出现在第一列,所以日志格式不用添加$httpxforwarder_for,
set_real_ip_from 192.168.7.0/24;#这个是内网的网段ip real_ip_header X-Forwarded-For
haproxy负载均衡后端服务器获取客户端真实ip
方法一:
haproxy配置如下: 在default或frontend或者backend模块下添加以下配置就可以了:option forwardfor
在default下配置,对所有的后端都会生效,在frontend下配置,对转到下面的backend下生效,在backend配置,只对此下面的后端服务器生效,不放心,可以在这三个上面都添加
后端nginx服务器只需要配置日志格式为以下,最后真实ip出现在最后一列。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
方法二:
haproxy配置和方法一一样, 后端服务器可以添加以下配置:
在http模块下添加以下两行就可以,最后真实ip就会出现在第一列,所以日志格式不用添加$httpxforwarder_for,
set_real_ip_from 192.168.7.0/24;#这个是内网的网段ip real_ip_header X-Forwarded-For
其实nginx和haproxy配置方法都一样,至少后端的服务器一样,只是我们是想让客户端的ip出现在第几列的问题
原文链接:nginx和haproxy作为负载均衡获取真实ip的方法,转载请注明来源!