client(web 浏览器) ----> haproxy(acl backend)----> nginx (proxy_pass)----> java程序
地址如下:
1.1.1.1 2.2.2.2 3.3.3.3
默认正常的java程序看到的 X-Forwarded-For 为 1.1.1.1,2.2.2.2, 3.3.3.3
haproxy日志中看到的是 1.1.1.1
nginx日志中看到的是 1.1.1.1,2.2.2.2
如有一段nginx中的正常的生产日志:
"111.14.66.215, 21.32.2.206,21.32.2.206"
但是haproxy和nginx中都有一些参数可以改变这个现状
如: haproxy如果设置
#option forwardfor except 127.0.0.0/8
如果option forwardfor被注释掉了,haproxy将不会将自己的作为代理写入到x-forwarder-for中去。
如: nginx中如果设置
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
如果 nginx中proxy_set_header被注释,nginx将不会将自己作为代理写入到x-forwarder-for中去。
注意:如果nginx设置了proxy_set_header ,real_ip_header {proxy_protocol|X-Forwarded-For}; 的每个不同值都会影响proxy_set_header的结果。
原文地址:http://blog.51cto.com/cuidehua/2130275