如何在Apache配置

时间:2019-05-22 09:20:02

标签: apache x-forwarded-for

我需要在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?

1 个答案:

答案 0 :(得分:0)

您看过remoteip_module apache模块吗?

您需要包括它,配置很简单:

LoadModule remoteip_module modules/mod_remoteip.so
RemoteIPHeader x-forwarded-for

我的代理是haproxy,在后端部分:

option  forwardfor

forwardfor选项可确保转发的请求包括实际的客户端IP地址。

然后remote_addr将是客户端IP