我已经在 Ubuntu 20.04 上安装了 Apache mod_geoip 模块
sudo apt-get install libapache2-mod-geoip
并编辑文件:/etc/apache2/mods-enabled/geoip.conf
以启用:
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
GeoIPDBFile /usr/share/GeoIP/GeoIPv6.dat
我运行了命令sudo service apache2 reload
也尝试了这些选项,但没有成功
GeoIPUseFirstNonPrivateXForwardedForIP On
GeoIPScanProxyHeaders On
它显示错误的国家,我的 IP 地址国家/地区CA
,其显示FR
在服务器上,我已经安装了 Apache 和 Nginx,以及 php7.4
我是否遗漏了某些配置?
PHP代码:
<?php
echo $_SERVER['GEOIP_COUNTRY_CODE'];
答案1
这可能更多地与 GeoIP 数据库不完整/过时有关。随着 IPv4 地址空间分配耗尽,世界各地的公司都在从其他国家的组织购买地址。亚马逊、谷歌和微软尽可能地这样做,因为使用其云服务的客户依赖于系统的可访问性。ISP 在吸引新客户时也面临同样的情况。您的 IP 地址可能最近属于一家法国公司,而您的 GeoIP 数据库太旧了,无法知道更好的信息。
大多数 GeoIP 数据库提供商都使用 whois 记录来跟踪更改并尽快更新其数据库。Maxmind 对其数据的准确性非常透明,对于付费客户,其数据准确性通常徘徊在 75% 左右,而对于免费数据库安装,则准确性较低。
如果您需要绝对准确地了解网站访问者的位置,那么就没有万无一失的解决方案。IP 地址可以在世界任何地方重新分配、欺骗或混淆。GPS 位置可以被请求和拒绝,或很容易被伪造。询问人们邮政编码、区号等也是如此。
如果 GeoIP 工具用于统计,那么最好了解部分数据可能存在错误。如果用于限制对网站/服务的访问,那么最好了解部分合法客户端可能被阻止。如果用于自定义显示内容,那么如果用户看到的内容不正确,也许应该为他们提供设置位置的选项。
希望这可以帮助。