Неплохой модуль для apache1.х и 2.х версий - по IP посетителя определяется его страна, регион и город. Может пригодиться, чтобы зарубить левых посетителей к примеру по странам...
Скачиваем нужные файлы:
cd /tmp wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz Для Apache 1.x: wget http://geolite.maxmind.com/download/geoip/api/mod_geoip/mod_geoip_1.3.4.tar.gz Или смотрите какой есть последний http://geolite.maxmind.com/download/geoip/api/mod_geoip/ Для Apache 2.x: wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz Или смотрите какой есть последний http://geolite.maxmind.com/download/geoip/api/mod_geoip2/
Ставлю на Apache 2.x и пример дальше идет под 2.х:
Распаковываем файлы:
cd /tmp tar xzf GeoIP.tar.gz tar xzf mod_geoip2_1.2.5.tar.gz gunzip GeoLiteCity.dat.gz gunzip GeoIP.dat.gz
cd /tmp/GeoIP-1.4.6 ./configure make install clean cd /tmp cp *.dat /usr/local/share/GeoIP/
cd /tmp/mod_geoip2_1.2.5 apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c
LoadModule geoip_module /usr/lib/apache/mod_geoip.so <IfModule mod_geoip.c> GeoIPEnable On GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat GeoIPOutput All </IfModule>
Проверяем модуль...
Создадим страничку со следующим кодом php, к примеру страницу geoip.php:
<pre> Откуда припёрся: <?php $country_code = apache_note("GEOIP_COUNTRY_CODE"); $region = apache_note("GEOIP_REGION"); $country_name = apache_note("GEOIP_COUNTRY_NAME"); $city = apache_note("GEOIP_CITY"); echo "Код страны: " . $country_code . "\n"; echo "Регион: " . $region . "\n"; echo "Имя страны: " . $country_name . "\n"; echo "Город: " . $city . "\n"; ?> </pre>
Также можно скачать и другие базы для более профессионального использования...
Где взять базы - тут [11] лежит какая-то программа, не вникал. С ней идёт несколько баз. Это программа для Windows... В папке с программой есть папка - "Config", с этой папки нам нужны все файлы DAT. Заливаем их на FTP и копируем в папку /usr/local/share/GeoIP/...
Теперь опять можно подправить файл httpd.conf, а точнее пункт в файле конфига "IfModule mod_geoip.c":
<IfModule mod_geoip.c> # Включаем модуль GeoIPEnable On # Указываем путь к БД (в доках говориться, что надо тока если местоположение БД нестандартное, но # какое считается стандартным - нигде не нашёл - потому на всякий случай указываю) - БД инсталлится вместе с # портом GeoIP. # Баз может быть и больше... Подгружаем все которые надо... GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat GeoIPDBFile /usr/local/share/GeoIP/GeoIPCity.dat GeoIPDBFile /usr/local/share/GeoIP/GeoIPOrg.dat # Следующая директива устанавливает где применяется модуль GeoIP (по крайней мере я так понял) - тока в # примечаниях apache (Notes), только в переменных окружения (Env) или везде (All - по дефолту): GeoIPOutput All # заставляет проверять БД GeoIP.dat чтобы определить, обновлялась ли БД # нужно чтобы не перезапускать апач при обновлении БД GeoIPFlags CheckCache ###### пример блокировки отдельных стран # Блокируем косоглазеньких - всё равно ничё не поймут SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry # Блокируем америкосов - тоже ничё не поймут, тупые слишком. SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry # Что мы, собствено, делаем по вышеуказанным правилам, # это должно быть в директории которую блокируем, т.е. внутри # <Directory "/usr/local/www/data"> # Deny from env=BlockCountry # </Directory> </IfModule>
<pre> <b>Откуда припёрся</b> <?php $country_code = apache_note("GEOIP_COUNTRY_CODE"); $region = apache_note("GEOIP_REGION"); $country_name = apache_note("GEOIP_COUNTRY_NAME"); $city = apache_note("GEOIP_CITY"); $connect_type = apache_note("GEOIP_NETSPEED"); $dma_code = apache_note("GEOIP_DMA_CODE"); $area_code = apache_note("GEOIP_AREA_CODE"); $latitude = apache_note("GEOIP_LATITUDE"); $longitude = apache_note("GEOIP_LONGITUDE"); $postal_code = apache_note("GEOIP_POSTAL_CODE"); $organization = apache_note("GEOIP_ORGANIZATION"); $isp = apache_note("GEOIP_ISP"); echo "Код страны: " . $country_code . "\n"; echo "Регион: " . $region . "\n"; echo "Имя страны: " . $country_name . "\n"; echo "Город: " . $city . "\n"; echo "Скорость: " . $connect_type . "\n"; echo "dma_code: " . $dma_code . "\n"; echo "area_code: " . $area_code . "\n"; echo "latitude: " . $latitude . "\n"; echo "longitude: " . $longitude . "\n"; echo "postal_code: " . $postal_code . "\n"; echo "Организация: " . $organization . "\n"; echo "Провайдер: " . $isp . "\n"; ?>
Если есть вопросы, то просим Вас посетить наш форум [12], на котором Вы сможете попросить бесплатно описание...
Ссылки:
[1] http://htfl.ru/linux/archlinux
[2] http://htfl.ru/freebsd
[3] http://htfl.ru/apache2.x
[4] http://htfl.ru/linux/centos
[5] http://htfl.ru/linux/debian
[6] http://htfl.ru/directadmin
[7] http://htfl.ru/linux/fedora
[8] http://htfl.ru/linux/gentoo
[9] http://htfl.ru/linux/mandriva
[10] http://htfl.ru/linux/ubuntu
[11] /out.php?link=http://weblogexpert.com/download.htm
[12] /out.php?link=http://htff.ru/