注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

Nginx使用http_geoip_module模块为网站定制国际化  

2017-06-14 15:01:59|  分类: 服务器 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
因为网站项目有需要根据不同国家展示不同版本,而不是简单地将界面的语言转换下,所以考虑采用http_geoip_module模块来满足需求。当然这模块还有很多其它有用的用法,比如可以做个简单的CDN,将来自不同国家的访问自动重定向到不同国家的服务器上,又或者做不同的城市版等等。好了,以上说得也够了,下面就来看看要如何做。
1)安装 Nginx:
因为系统自带的 nginx 一般不带这个模块,所以要下载 nginx 源代码后自行编译【这个过程大家很熟悉,就不多说了】:

# wget http://nginx.org/download/nginx-0.9.6.tar.gz
# tar zxvf nginx-0.9.6.tar.gz
# cd nginx-0.9.6
# ./configure --with-http_geoip_module ...
# make && make install

2)安装 MaxMind 的 GeoIP 库:
MaxMind 提供了免费的 IP 地域数据库(GeoIP.dat),不过这个数据库文件是二进制的,需要用 GeoIP 库来读取,所以除了要下载 GeoIP.dat 文件外,还需要安装能读取这个文件的库。

# wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
# tar -zxvf GeoIP.tar.gz
# cd GeoIP-1.4.8
# ./configure
# make && make install

# echo '/usr/local/lib' > /etc/ld.so.conf.d/geoip.conf

# ldconfig
这里解压后的目录,要根据版本来,目前是1.4.8版。因为这个目录需要加到动态链接配置里面,以便运行相关程序的时候能自动绑定到这个GeoIP 库,所以安装好后还需要配置。
3)下载 IP 数据库
MaxMind 提供了免费的 IP 地域数据库,这个数据库是二进制的,不能用文本编辑器打开,需要上面的 GeoIP 库来读取:

# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# gunzip GeoIP.dat.gz

# mv GeoIP.dat /var/www/html/GeoIP.dat

这里可以将这个IP 地域数据库放置在任意可访问目录下。
4)配置 Nginx:
在相关地方加上如下的配置就可以了:

http {
...
geoip_country /home/593668.com/GeoIP.dat;

#如使用城市库用这个

#geoip_city /home/593668.com/GeoLiteCity.dat;

fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
#如使用城市库用这个,server判断也请相应调整
#fastcgi_param GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;
...
}

server {
...
location / {
#默认网站
root /home/593668.com/www;
#这里判断是中国就走国内版
if ($geoip_country_code = CN) {
root /home/593668.com/cn;
}
...
}
...
}

使用起来还是很简易的,大家也可以为自己的网站制定不同国家的版本,其实MaxMind还提供了一个城市版本,有空也不妨一试。
Nginx使用http_geoip_module模块为网站定制国际化 - sinsunson - 天朝布衣田中码农参上
这里解释下,如果使用国家版本,有三个变量:
$geoip_country_code; 大写两字母,如"RU", "US".
$geoip_country_code3; 大写三字母,如"RUS", "USA".
$geoip_country_name;国家全名,如"Russian Federation", "United States".
如使用城市版本,有六个变量:
$geoip_city_country_code; 可参考如上解释。
$geoip_city_country_code3; 可参考如上解释。
$geoip_city_country_name; 可参考如上解释。
$geoip_region; 地区名称,可能包含省,州,地区,联邦州等,例"Moscow City", "DC".
$geoip_city; 城市名称,例如"Moscow", "Washington".
$geoip_postal_code;城市邮编
至于大家喜欢用那个,请自便就好。
 
  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017