本地主机中的 GeoIP

Posted

技术标签:

【中文标题】本地主机中的 GeoIP【英文标题】:GeoIP in localhost 【发布时间】:2014-05-08 15:10:32 【问题描述】:

我正在使用 GeoIP 从客户端地址获取国家/地区,但它返回 null

 ip = (req.headers['x-forwarded-for'] || '').split(',')[0] || req.connection.remoteAddress;
 country = geoip.lookup(ip).country;

我认为这是因为我使用的是 localhost,因为检测到的 ip 是 127.0.1。 如何解决?

【问题讨论】:

如果不使用 localhost 会发生什么?如果您的服务器可以公开访问,我会点击链接并让您知道它对我的意义。 @AdamD.Ruppe 它在gentle-plains-8744.herokuapp.com 上用同样的方法为我工作 当您获得 forwarded-for 标头的本地环回时,然后回到链上,直到您有一个 public on @ratchetfreak 我很抱歉我很愚蠢,但我不明白。 【参考方案1】:

您可以使用http://fugal.net/ip.cgi 或http://ifconfig.me/ip 等服务通过http.get() 获取您的外部IP 地址,或使用child_process.exec() 运行shell 命令(如OS X 上的$ ip),但它不是交叉平台解决方案。我认为使用http.IncomingMessage对象(req)或os.networkInterfaces()方法获取本地机器外部IP是不可能的。

在您的情况下,我会默认使用某个国家/地区/纬度/任何您需要的 nullgeoip.lookup(),至少在开发环境中。

var geo = geoip.lookup(ip);
var country = geo ? geo.country : 'US';

【讨论】:

谢谢,这就是我要做的,但我将不得不等待生产来测试它是否有效:(

以上是关于本地主机中的 GeoIP的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 从保存在本地的 GeoIP 数据库中获取数据

GeoIP2 MaxMind pom 和我本地的有啥区别?

Rails GeoLiteCity GeoIP 在本地开发环境中不起作用

我无法从网络中的其他设备访问本地主机的原因是啥?

EC2服务器中的Python Geoip2 maxminddb.reader错误

本地主机中的 WordPress 滑块 url 问题