Nginx使用GeoIP模块-Ubuntu

GeoIP是IP地址对应的地理位置数据库,本文介绍怎么使用Nginx-GeoIP获得访问者所在的地理位置。

GeoIP模块设置了多个环境变量:$geoip_country_name$geoip_country_code$geoip_city等等,你可以在PHP脚本或Nginx配置文件中使用这些变量。例如:你可以根据访问者所在国家设置网站语言。

我使用的系统环境:

# 确保Nginx支持GeoIP

Nginx使用GeoIP模块-Ubuntu

# 下载GeoIP数据库

在Ubuntu系统上可以直接使用apt安装geoip-database,但是它只包含国家信息,而且也不是最新数据库。我从http://geolite.maxmind.com下载最新的GeoIP数据库。

创建一个目录:

使用wget下载:

# 配置Nginx

编辑配置文件:

把GeoIP数据库文件路径添加到http段:

Nginx使用GeoIP模块-Ubuntu

为了可以在PHP中使用这些GeoIP变量,我们需要设置一些fastcgi_param参数。

注意:确保你的vhost虚拟主机配置文件中(location ~ \.php$)有一行 include /etc/nginx/fastcgi_params。

Nginx使用GeoIP模块-Ubuntu

最后,重启Nginx:

重启PHP-FPM:

测试

创建一个PHP测试文件:

使用如下代码访问GeoIP变量:

访问http://your_server/geoip.php测试。

其它配置

如果你使用Nginx做反向代理,而想把GeoIP变量传入到后端,你应该创建或编辑proxy.conf文件:

内容如下:

注意:在nginx proxy配置中添加 include /etc/nginx/proxy.conf。

在Nginx配置文件中使用GeoIP变量:


更多:http://nginx.org/

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注