使用 Nginx 和 GeoIP 模块来处理不同国家的访问
2017-06-16 01:02
543 查看
转载自: http://onlyzq.blog.51cto.com/1228/533162
安装 Nginx
因为要用到 http_geoip_module 模块,系统自带的 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 --without-http_empty_gif_module --with-poll_module \
--with-http_stub_status_module --with-http_ssl_module \
--with-http_geoip_module
# make; make install
安装 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.6
# ./configure
# make; make install
刚才安装的库自动安装到 /usr/local/lib 下,所以这个目录需要加到动态链接配置里面以便运行相关程序的时候能自动绑定到这个 GeoIP 库:
# echo '/usr/local/lib' > /etc/ld.so.conf.d/geoip.conf
# ldconfig
下载 IP 数据库
MaxMind 提供了免费的 IP 地域数据库,这个数据库是二进制的,不能用文本编辑器打开,需要上面的 GeoIP 库来读取:
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# gunzip GeoIP.dat.gz
配置 Nginx
最后是配置 nginx,在相关地方加上如下的配置就可以了:
# vi /etc/nginx/nginx.conf
...
geoip_country /home/vpsee/GeoIP.dat;
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
...
if ($geoip_country_code = CN) {
root /home/vpsee/cn/;
}
这样,当来自中国的 IP 访问网站后就自动访问到预定的 /home/vpsee/cn 页面。关于 Nginx + GeoIP
还有很多有用的用法,比如做个简单的 CDN,来自中国的访问自动解析到国内服务器、来自美国的访问自动转向到美国服务器等。MaxMind
还提供了全球各个城市的 IP 信息,还可以下载城市 IP 数据库来针对不同城市做处理。
安装 Nginx
因为要用到 http_geoip_module 模块,系统自带的 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 --without-http_empty_gif_module --with-poll_module \
--with-http_stub_status_module --with-http_ssl_module \
--with-http_geoip_module
# make; make install
安装 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.6
# ./configure
# make; make install
刚才安装的库自动安装到 /usr/local/lib 下,所以这个目录需要加到动态链接配置里面以便运行相关程序的时候能自动绑定到这个 GeoIP 库:
# echo '/usr/local/lib' > /etc/ld.so.conf.d/geoip.conf
# ldconfig
下载 IP 数据库
MaxMind 提供了免费的 IP 地域数据库,这个数据库是二进制的,不能用文本编辑器打开,需要上面的 GeoIP 库来读取:
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# gunzip GeoIP.dat.gz
配置 Nginx
最后是配置 nginx,在相关地方加上如下的配置就可以了:
# vi /etc/nginx/nginx.conf
...
geoip_country /home/vpsee/GeoIP.dat;
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
...
if ($geoip_country_code = CN) {
root /home/vpsee/cn/;
}
这样,当来自中国的 IP 访问网站后就自动访问到预定的 /home/vpsee/cn 页面。关于 Nginx + GeoIP
还有很多有用的用法,比如做个简单的 CDN,来自中国的访问自动解析到国内服务器、来自美国的访问自动转向到美国服务器等。MaxMind
还提供了全球各个城市的 IP 信息,还可以下载城市 IP 数据库来针对不同城市做处理。
相关文章推荐
- 使用 Nginx 和 GeoIP 模块来处理不同国家的访问2
- 使用 Nginx 和 GeoIP 模块来处理不同国家的访问
- 使用 Nginx 和 GeoIP 模块来处理不同国家的访问
- 使用 Nginx 和 GeoIP 模块来处理不同国家的访问1
- 使用 Nginx 和 GeoIP 模块来处理不同国家的访问。
- 包含别人的dll,然后我们用类库再次封装成dll的时候的注意事项;源文件与模块生成时的文件不同;创建调试信息文件 ··PDB时发生意外的错误,进程无法访问文件,因为另一个程序正在使用此文件
- nginx的geoip模块使用
- nginx中Geoip_module模块的使用
- 详解nginx使用ssl模块配置支持HTTPS访问
- nginx访问限制模块limit_conn_zone 和limit_req_zone配置使用详解
- nginx使用geoip判断国家
- nginx使用ssl模块配置支持HTTPS访问
- Nginx的GeoIp模块的应用与使用
- Nginx使用图片处理模块
- Nginx模块开发(3)————使用upstream访问第三方服务
- Nginx服务器中配置GeoIP模块来拦截指定国家IP
- nginx使用ssl模块配置支持HTTPS访问 AND 开启gzip
- nginx使用ssl模块配置支持HTTPS访问的方法
- Nginx 和 GeoIP 模块的使用
- nginx使用ssl模块配置支持HTTPS访问