Load Balancer $ _SERVER ['REMOTE_ADDR']不工作

时间:2016-04-03 19:18:26

标签: php amazon-web-services load-balancing elastic-beanstalk

我已经转而使用亚马逊AWS弹性负载均衡器,现在我正在获取$_SERVER['REMOTE_ADDR']的私有IP地址 - 这曾经是我客户端的IP地址。

如何立即获取客户端IP地址?

2 个答案:

答案 0 :(得分:5)

您的网络服务器接收来自Amazon ELB的HTTP请求。因此,远程地址将始终是ELB IP地址之一。 如果您需要ELB后面的远程主机地址,请从HTTP标头" X-Forwarded-For"中获取。

答案 1 :(得分:0)

以下内容在定义LogFormat的httpd.conf全局部分为我工作。通过以下更改,将$_SERVER['REMOTE_ADDR']设置为php-fpm上的客户端ip,而不是ELB ip。

<IfModule remoteip_module>
   RemoteIPHeader X-Forwarded-For
   LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
   LogFormat "%a %l %u %t \"%r\" %>s %b" common
</IfModule>

解决方案来自https://medium.com/@jiraknet/apache-2-4-mod-remoteip-for-get-real-ip-on-aws-elb-6e9f40876b06