我需要在 httpd conf 中使用真实 IP 而不是 Proxy / Loabalancer IP 的 RewriteCond 语法。我的用例是一个维护页面,应该向所有用户显示,除了我的例外列表中的一些用户,由单独文件中列出的 IP 地址定义。
我已经在 apache 中将 REMOTE_ADDR 设置为 X-Forwarded-For 但我没有得到我需要的点。
我已将 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?