Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1288458
  • 博文数量: 315
  • 博客积分: 10397
  • 博客等级: 上将
  • 技术积分: 3731
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-07 21:21
文章分类

全部博文(315)

文章存档

2015年(10)

2014年(3)

2013年(2)

2012年(8)

2011年(8)

2010年(29)

2009年(59)

2008年(77)

2007年(119)

分类: LINUX

2011-04-20 13:40:18

如果你的M网站是面向英文客户,你可能不想接受中国的IP段的访问,那么可以使用APACHE的geoip模块方便地做到这一点

仅供参考!

I. 简述geoip安装过程:
1. 得到roo权限,准备一个空目录:
su mkdir /home/admin/geoip
cd /home/admin/geoip

2. 下载和安装geoip:
wget ... oIP.tar.gz
tar xzfv GeoIP.tar.gz

cd GeoIP*

./configure
make
make check
make install
安装好软件的同时,也生成了默认的Geo.dat文件
3. 下载和安装geoip的apache模块 :
mkdir mod_geoip
cd mod_geoip
wget pi/...ip_1.1.1.tar.gz


tar xzfv mod_geoip_1.1.1.tar.gz
cd mod_geoip_1.1.1

apxs -cia -I/usr/local/include -L/usr/local/lib -lGeoIP mod_geoip.c
apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。
因此,要使用这个扩展机制,你的平台必须支持DSO特性,而且Apache httpd必须内建了mod_so模块。apxs工具能自动探测是否具备这样的条件,你也可以自己用这个命令手动探测:,

4. (可选)把目录/usr/local/lib加入到动态链接库配置文件:
编辑/etc/ld.so.conf 在文件底部加一行/usr/local/lib
/usr/kerberos/lib
/usr/lib/mysql
/usr/X11R6/lib
/usr/local/lib

然后执行/sbin/ldconfig /etc/ld.so.conf
(第四步可能不需要做的,好像第2步会自动做这个事情,或者之前你的系统已经配置好了,另外就算要编辑ld.so.conf,不同的linux所在的目录也是不同的)

5. 检查httpd.conf ,这时候你看到原来的httpd.conf的备份,新的httpd.config增加一行可能像这样:
LoadModule geoip_module lib/apache/mod_geoip.so

1). 将 LoadModule geoip_module lib/apache/mod_geoip.so 改为你的so所在的实际路径,如:
LoadModule geoip_module /usr/local/libexec/apache/mod_geoip.so
2). 在 AddModule mod_geoip.c下面加一行:
GeoIPEnable On
此时配置文件如下
引用:
LoadModule geoip_module lib/apache/mod_geoip.so
GeoIPEnable On

该条目 GeoIPDBFile /usr/local/www/GeoLiteCity.dat 可选。

6. 重新启动Apache.
service httpd restart
对于freebsd,可能使用apachectl restart命令
如果担心conf文件配置错误,可以事先使用 apachectl configtest 来测试

II.使用geoip阻止中国IP:
在完成第I步的基础上,然后下在geocity数据文件,该数据文件是收费的,但是官方有getlite(一个不太精确的数据库)是免费的,下载后存储导服务器的目录,如/usr/local/www下。
配置httpd.conf.
Httpd.conf代码 复制代码 收藏代码
  1. GeoIPEnable On
  2. GeoIPDBFile /usr/local/www/GeoLiteCity.dat
  3. SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
  4. SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry
  5. # ... place more countries here
  6. Deny from env=BlockCountry
  7. # Optional - use if you want to allow a specific IP address from the country you denied
  8. # (See 1.3/mod/mod_access.html for more details)
  9. Allow from 10.1.2.3
GeoIPEnable On GeoIPDBFile /usr/local/www/GeoLiteCity.dat SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry # ... place more countries here Deny from env=BlockCountry # Optional - use if you want to allow a specific IP address from the country you denied # (See 1.3/mod/mod_access.html for more details) Allow from 10.1.2.3

将如上代码添加到httpd.config中即可
注意:
Deny from env=BlockCountry
Allow from 10.1.2.3


这两行必须放在你的应用所在的
如果你的应用使用虚拟主机,那么httpd.conf配置为: AllowOverride All . 这样可以把上面的配置写入你的.htaccess而不必修改httpd.conf文件. 
阅读(913) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~