我需要在httpd conf内部使用RewriteCond语法,而不是Proxy / Loabalancer IP。 我的用例是一个维护页面,除我的例外列表中的某些用户(由单独文件中列出的IP地址定义)外,应向所有用户显示该页面。
我已经期待Set REMOTE_ADDR to X-Forwarded-For in apache 但是我没有得到我所需要的观点。
我已将Logformat配置为
LogFormat "%{X-Forwarded-For}i \"test\" %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
我的输出是
www.xxx.yyy.zzz "test" 10.0.0.215 - - [22/May/2019:11:09:20 +0200]
但也可以是
www.xxx.yyy.zzz, 10.0.0.12 "test" 10.0.0.215 - - [22/May/2019:11:09:19 +0200]
因此,我需要在用例中提取第一个IP。 我在httpd.conf中拥有的内容:
RewriteMap exceptions /appli/tecracer/apps/helios-fas/maintenance/exceptions.map
# Allow Individual IP addresses past maintenance page
RewriteCond ${exceptions:%{REMOTE_ADDR}} =OK
RewriteRule ^ - [L]
这里,我需要真正的IP而不是REMOTE_ADDR,它是X-Forward-For标头信息的第一项。 我该如何提取该数据,我是否可以相信,第一个IP就是每个客户端IP?
答案 0 :(得分:0)
您看过remoteip_module apache模块吗?
您需要包括它,配置很简单:
LoadModule remoteip_module modules/mod_remoteip.so
RemoteIPHeader x-forwarded-for
我的代理是haproxy,在后端部分:
option forwardfor
forwardfor选项可确保转发的请求包括实际的客户端IP地址。
然后remote_addr将是客户端IP