AWS-ELB -> GEOIP -> MAXMIND -> Laravel

AWS-ELB -> GEOIP -> MAXMIND -> Laravel

我们试图在我们的网站上以正确的语言为来自多个国家/地区的人们提供服务。我们在 Laravel 中添加了 GeoIP 以及 maxmind 包。

无论我们尝试什么,我们每次都会遇到错误 500 的问题: IP 地址“10.2.1.211”是保留 IP 地址

我们首先尝试在 apache 中进行重定向 X_FORWARDED_FOR 但它仍然无法正常工作。

有人可以帮助我们并告诉我们具体的解决方法吗?

我们的愿望: AWS:Cloundfront、ELB、Ec2、Laravel 5.5、Maxmind(用于 GeoIP)

您应该能够从 X_FORWARDED_FOR 变量中获取流量的 public IP 地址。

https://aws.amazon.com/premiumsupport/knowledge-center/log-client-ip-load-balancer-apache/

您应该从 Apache 打印出变量并查看是否可以正确接收该值。任何带有 10.x 的都是私人地址。

看起来 you can configure Cloudfront to provide an http header CloudFront-Viewer-Country 将包含您的访问者的 ISO 国家/地区代码。这将比 Maxmind 使用起来更快更简单。

例如$visitorCountryCode = isset($_SERVER['CloudFront-Viewer-Country']) ? $_SERVER['CloudFront-Viewer-Country'] : '';

您的错误500是否仅在测试期间出现?如果使用直接连接到 site/intranet 的设备进行测试,则尝试通过通过互联网服务提供商连接的浏览器进行访问("direct" 或内联网连接很可能具有 "reserved" IP 地址)。