考虑场景/流程:
remote user (client) > proxy1 > proxy2 > AWS ALB > httpd/reverse_proxy > my_application
当用户的请求遍历其网络时,X-Forwarded-For(XFF)标头会附加每个连续代理的IP地址。例如,当到达ALB时,XFF标头包含“ 192.168.1.100,100.99.98.97”。然后,ALB将ClientIP附加到此标头,在这种情况下,它是proxy2的IP。最后,当请求到达位于我的应用程序前面的反向代理时,XFF标头现在为:“ 192.168.1.100、100.99.98.97、95.94.93.92”。
我看到的问题:在reverse_proxy上,httpd似乎正在忽略或丢弃X-Forwarded-For标头链中的最后一个/最右边的IP,尤其是当多于2个地址时。
Require
之后尝试调用RemoteIPHeader X-Forwarded-For
指令(mod_authz_host)。proxy1
,则在反向代理处的XFF标头中可以看到proxy2
的地址,没有问题。我不确定我在配置或测试中错过了什么,虽然不是标准的,但XFF标头中的多个地址很常见。我仅在Apache httpd 2.4中遇到此问题。在2.2版中,这不是问题,我可以重复相同的设置/流程,并且可以看到链中的所有3个地址。提前致谢。
示例虚拟主机:
<VirtualHost *:80>
ProxyPreserveHost On
ServerName myapp.mydomain.com
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
RemoteIPHeader X-Forwarded-For
ProxyPass / http://10.1.2.3:8080/ timeout=3600
ProxyPassReverse "/" http://10.1.2.3:8080/
SetEnv proxy-sendchunked
ErrorLog /var/log/httpd/error_myapp
LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined2
CustomLog /var/log/httpd/access_myapp combined2
</VirtualHost>
考虑场景/流:远程用户(客户端)> proxy1> proxy2> AWS ALB> httpd / reverse_proxy> my_application当用户的请求遍历其网络时,X-Forwarded -...