我的数据库中有一个数量有限的城市的网站,需要向用户显示最近的城市到他当前的位置.
我可以通过MaxMind API获取位置,但我希望将数据库中最近的城市提供给用户城市.
例如,如果我在数据库中有这些城市:Los Angeles,San Francisco并且New York City,我正在从其他城市访问Miami,我应该看到NYC被选中,因为它是最接近的地理位置.
快速且具有性能意识的最佳方法是什么?
CloudFlare从原始IP提供用户的国家/地区,但我需要在城市级别上的位置,因此我使用mod_geoip Apache脚本添加了MaxMind的GeoCityLite.
现在的问题是在PHP变量中获取IP,我正在使用类似的东西
$country = apache_note("GEOIP_COUNTRY_CODE");
Run Code Online (Sandbox Code Playgroud)
这很好,但IP mod_geoip使用的是CloudFlare DNS,而不是最终用户.CloudFlare提供服务器变量HTTP_CF_CONNECTING_IP以使用最终用户IP,但如何在mod_geoip中使用THAT变量/ IP?
这可以通过htaccess中的几行完成吗?
编辑:我有一个解决方法使用php API进行geoip这很容易,但是使用apache查找php api的基准测试要好得多,所以我宁愿找到这个解决方案.
可能重复:
如何使用PHP获取页面访问者国家/地区?
我一直在寻找,我似乎找不到任何东西.我需要一个免费的PHP GeoIP/Ip到国家.
我能找到的只是它给了我这个国家和国家的小形式.我还想了解可能的街道或坐标,城市以及主办信息?
我需要这个,因为我正在创建一个PHP CMS(为我自己和客户),我想跟踪ips.
我真的不想要API,我希望它像数据库一样.有任何想法吗 ?
我正在尝试将GeoIP模块与我的Nginx和Uwsgi堆栈一起使用.所有教程都与使用fastcgi有关,但由于我不使用fastcgi它没有帮助.
我需要让nginx通过自定义HTTP头将GeoIP数据传递到CGI应用程序,例如:
proxy_set_header X-GeoIP-Country $geoip_country_name;
proxy_set_header X-GeoIP-City $geoip_city;
Run Code Online (Sandbox Code Playgroud)
我如何使用Uwsgi执行此操作?
我已经安装了geoip来获取基于php中的remote_server ip的地址.我已经在我的系统中安装了Geoip包,我也安装了php5-geoip php扩展.但是在运行以下脚本时,它显示致命错误.
geoip_open("GeoIP.dat",GEOIP_STANDARD);
Run Code Online (Sandbox Code Playgroud)
错误是
Fatal error: Call to undefined function geoip_open()
Run Code Online (Sandbox Code Playgroud) 我的一个网站上有一个GeoIPCity.day文件.最初的开发人员告诉我这是maxmind.com的免费文件,我应该每月更新一次.我查看了maxmind.com并且找不到具有完全相同名称的文件.知道我应该用什么文件作为更新吗?以下是我在网站上可以找到的文件列表:http://dev.maxmind.com/geoip/legacy/geolite/#Downloads
我一直在使用 geoip php 扩展。这个扩展没有像以前那样为我提供纬度和经度。
查看 maxmind 网站,我可以阅读:
注意:经过仔细考虑,考虑到客户的反馈,我们决定不从 GeoLite2 数据库中删除纬度和经度坐标。我们正在审查所有 GeoLite2 和 GeoIP 数据库中使用的坐标,以确保不存在误用风险。
是否有另一种方法(或免费替代方法)从 IP 地址获取纬度和经度?
几天前开始我无法下载
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
我用来启用ngx_http_geoip_module模块的数据库.
它一直是免费的,但现在可用.有没有人知道这个数据库最近的变化?
Geolite2 访问权限于 12 月 30 日发生变化。
今天我注册了一个 Maxmind 帐户,注册了一个许可证密钥(两个密钥都表示“此密钥会用于 GeoIP 更新吗?”,另一个则不会)..现在每次我输入时都会收到 401:
smachine:~# wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN-CSV&token=n3fU000000000000&suffix=zip"
--2020-01-13 00:37:23-- https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN-CSV&token=n3fU000000000000&suffix=zip
Resolving download.maxmind.com (download.maxmind.com)... 104.16.37.47, 104.16.38.47, 2606:4700::6810:252f, ...
Connecting to download.maxmind.com (download.maxmind.com)|104.16.37.47|:443... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Username/Password Authentication Failed.
smachine:~#
Run Code Online (Sandbox Code Playgroud)
你知道我在这里做错了什么吗?
我使用的插件现在显然不再需要许可证密钥了 https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
我试过这个网址(注意:我已经从下面删除了我的许可证密钥)但它没有任何想法
https://download.maxmind.com/app/geoip_download_by_token?edition_id=GeoLite2-Country&license_key= {此处的许可证密钥}&suffix=mmdb.gz