java geolitecity_在Java中获取地理位置的最佳方式

GeoLite(

http://dev.maxmind.com/geoip/legacy/geolite/)是一个简单的方法。因为它使用本地数据库,因此不需要Web服务调用,并且对于大量IP进行地理编码的速度要快得多。

这是怎么回事?

添加这个Maven工件:

com.maxmind.geoip

geoip-api

1.2.11

将文件解压到任何文件夹中。然后做:

LookupService cl = new LookupService("/var/geolite/GeoLiteCity.dat",

LookupService.GEOIP_MEMORY_CACHE | LookupService.GEOIP_CHECK_CACHE);

Location location = cl.getLocation("some ip address");

结果将位于纬度,经度,城市,区域和countryCode属性中的位置对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,根据您的要求,可以使用Nginx作为代理服务器,并且使用它的IP Hash和GeoIP模块进行IP流量的分流和黑名单的设置。 首先,您需要在代理服务器上安装Nginx和GeoIP模块。您可以使用以下命令进行安装: ```bash sudo apt-get update sudo apt-get install nginx nginx-extras libnginx-mod-http-geoip geoip-database ``` 然后,您需要在Nginx的配置文件添加以下内容: ``` http { geoip_country /usr/share/GeoIP/GeoIP.dat; geoip_city /usr/share/GeoIP/GeoLiteCity.dat; geoip_proxy_recursive on; upstream app { ip_hash; server app_server_1; server app_server_2; } upstream redis { ip_hash; server redis_master; server redis_slave_1; server redis_slave_2; } server { listen 80; server_name example.com; # Blacklist if ($geoip_country_code = CN) { return 403; } if ($remote_addr = 1.2.3.4) { return 403; } location / { proxy_pass http://app; } location /redis/ { proxy_pass http://redis; } } } ``` 在上面的配置,我们使用ip_hash模块对应用服务器和Redis服务器进行了负载均衡,并使用GeoIP模块对IP进行了分流。当用户访问时,Nginx会根据用户的IP地址将它们分配到相应的服务器上。此外,我们还在配置文件设置了一个黑名单,当用户的IP地址被列入黑名单时,Nginx会拒绝它们的访问请求。 请注意,我们在上面的配置只是提供了一种方法来实现您的要求。实际上,您可以使用其他方法来实现同样的功能,如使用HAProxy等负载均衡工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值