我已经转而使用亚马逊AWS弹性负载均衡器,现在我正在获取$_SERVER['REMOTE_ADDR']
的私有IP地址 - 这曾经是我客户端的IP地址。
如何立即获取客户端IP地址?
答案 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