2011-11-28 122 views
5

我安装mod_geoIP基于这些instructions(不是很详细,因此这个问题)mod_geoIP安装帮助?

的cPanel在这一点上,我已经安装了模块的指示。我也下载了GeoLite国家的csv文件。 AM我错过了什么?

我认为下一步是创建,允许各国在我的.htaccess文件中的条目像这样:

GeoIPEnable On 
GeoIPDBFile /path/to/GeoIPCountryWhois.csv 

SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry 
SetEnvIf GEOIP_COUNTRY_CODE CA AllowCountry 
SetEnvIf GEOIP_COUNTRY_CODE MX AllowCountry 

Deny from all 
Allow from env=AllowCountry 

它看起来像我缺少什么?还有一种方法来测试这个?

+0

这不起作用? –

+0

你能看到GEOIP_COUNTRY_CODE被设置了吗?例如使用$ _ENV [“GEOIP_COUNTRY_CODE”]是一些PHP文件。 – Gerben

回答

1

我知道你的问题有点旧,但它可以使用一个答案。

我认为你唯一错的是你必须使用二进制数据库文件而不是CSV文件。

如果您使用的是基于Debian的发行,这样做:

  1. 安装的Apache2和mod_geoip:sudo apt-get install apache2 libapache2-mod-geoip
  2. 下载下列操作之一:
  3. gunzip解压:sudo gunzip /etc/apache2/GeoIP.dat.gz
  4. 编辑相应的主机文件:sudo nano /etc/apache2/sites-available/default(或任何你想)
  5. 将以下到该文件:
    GeoIPEnable On
    GeoIPDBFile /etc/apache2/GeoIP.dat
  6. sudo service apache2 restartsudo invoke-rc.d apache2 restart
  7. 然后使用ENV2变量内的Apache2或您最喜欢的编程语言。

如果geoip-bin包是否存在,你很可能使用,而不是在步骤2中我没有用它下载它,所以我不知道在什么路径文件会。

上述步骤给我这些ENV变量:

GEOIP_ADDR   99.99.99.99 
GEOIP_CONTINENT_CODE NA 
GEOIP_COUNTRY_CODE  US 
GEOIP_COUNTRY_NAME  United States 
GEOIP_REGION  TX 
GEOIP_REGION_NAME  Texas 
GEOIP_CITY   San Antonio 
GEOIP_DMA_CODE  641 
GEOIP_AREA_CODE  210 
GEOIP_LATITUDE  29.488899 
GEOIP_LONGITUDE  -98.398697 
GEOIP_POSTAL_CODE  78218