ПРОЕКТЫ 


  АРХИВ 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 


Модули Apache 

Прочие программы 


ПИШИТЕ
ПИСЬМА

В боумастер купить арбалет в интернет магазине дешево с бесплатной доставкой по всей России













     ПРОГРАММЫ :: Модули Apache

mod_geo.c version 2.0

модуль, определяющий географию посетителей сайта

Download: ftp://ftp.lexa.ru/pub/apache-rus/contrib/

Оглавление

  1. Copyright
  2. Назначение
  3. Установка (Apache 1.x)
  4. Установка (Apache 2.0)
  5. Конфигурация
  6. Замечания

Copyright

Copyright (C) 2000-2005 Alex Tutubalin, lexa@lexa.ru

Допускается распространение и использование в производных продуктах на условиях аналогичных Apache License - должен быть сохранен копирайт автора и ссылка на http://www.lexa.ru/lexa, производный продукт не должен называться mod_geo

Модуль включает существенную часть libpatricia, Copyright (c) 1997, 1998, 1999
The Regents of the University of Michigan ("The Regents") and Merit Network, Inc. All rights reserved.

Описание

Модуль предназначен для определения географии пользователя WWW-сервера и передачи географии вызываемым скриптам/динамическим страницам в виде дополнительного аргумента запроса. Это может быть полезно, если в зависимости от региона формируется разное содержимое ответной страницы, скажем разная реклама или разные ссылки на Интернет-магазины (например,американские для US/CA, европейские для остальных). Модуль совместим с mod_accel - ответы для каждой страны кэшируются отдельно т.к. код страны добавляется к видимому mod_accel URL.

Использовано внутреннее представление в виде Patricia tree, что допускает наличие в базе данных вложенных адресов:

      8.0.0.0/7 US
      9.20.0.0/17 GB
      9.20.22.0/24 GB.LondonArea.SamiiSever
Скорость работы Patricia tree более чем достаточна - на аналогичной задаче и таблице в 70 тыс префиксов автор получал скорость порядка 800 тыс lookups/sec на PIII-600, что на три порядка больше быстродействия Apache на той же машине.

Скрипты для построения БД по географии в комплект модуля не входят и будут опубликованы позднее, входящая в комплект таблица была построена 10.01.2002 по данным БД RIPE/ARIN/APNIC.

Определение географии пользователя происходит дважды:

  • Сразу после чтения запроса, при этом код страны помещается в переменную окружения IP_GEO, которую можно использовать в RewriteRule и подобных директивах. Наличие/отсутствие директив GEOActive/GEOCGIArg на эту фазу работы не влияет - определение географии происходит если для данного сервера/виртуального сервера указана таблица с географической БД.
  • На финальной стадии обработки запроса (перед запуском handler) происходит повторное определение географии пользователя и дописывание ее в строку аргументов запроса. Эта стадия имеет место только если она разрешена директивами GEOActive/GEOCGIArg
Запись географических данных в log-файл
Географическую информацию можно записать в лог добавив поле %{IP_GEO}e в директиву LogFormat

Установка (Apache 1.x)

Для работы с Apache 1.x предназначен модуль mod_geo.c
При конфигурации Apache к параметрам ./configure нужно добавить --add-module=/path/to/mod_geo.c:
tar xzvf apache_1.3xxx
tar xzvf mod_geo-1.0.xx.tar.gz
cd apache_1.3xx
./configure --prefix=/usr/local/apache ... --add-module=../mod_geo_1.xx/mod_geo.c other-params
make
make install

Установка (Apache 2.0)

Для работы с Apache 2.0 предназначен модуль mod_geo2.c
Сначала необходимо установить Apache 2.0.x, предположим, мы сделали это в директорию /usr/local/apache
Для установки модуля mod_geo2 нужно использовать программу apxs:
tar xzvf mod_geo-1.xx.tar.gz
cd mod_geo-1.xx
/usr/local/apach/bin/apxs -i -c -a mod_geo2.c
эта команда скомпилирует модуль (ключ -c), установит его в каталог Apache (ключ -i) и активирует модуль добавлением команды LoadModule в httpd.conf (ключ -a)

Конфигурационные директивы

Конфигурационная директива GEOTable может быть указана только в контексте всего сервера или внутри <VirtualServer>, остальные (обе :) - где угодно в httpd.conf, а для указания в .htaccess должно быть разрешено AllowOverride FileInfo.
GEOTable filename
Имя файла с географической базой в формате
address/masklen String
14.0.0.0/8,US.UT.SoltLakeCity
15.0.0.0/8 GB
15.203.128.0/18 FR
15.204.96.0/19 FR
...
Длина строки в географическом файле не должна превышать 256 символов, работоспособность при более длинных строках не гарантируется.
Поле адреса отделяется от строки-описания пробелом или запятой. В сложных случаях (в самой строке могут быть пробелы или запятая) рекомендуется использование запятой, она при разборе данных проверяется первой.
В ответе (переменной окружения и параметре CGI) все пробелы и табуляции в описательной строке заменяются на символ +, соответственно использование в описаниях и плюса и пробела нежелательно.

Адреса могут быть вложенными, в этом случае найдется best match
Default: умолчания нет

GEOActive On/Off
Включает-выключает добавление кода страны в QUERY_STRING.
Default: On

GEOCGIArg string
Имя параметра, который будет содержать код страны. Например при
GEOCGIArg ipcountry
и клиенте пришедшем из России (RU) в строку запроса будет добавлен параметр ipcountry=RU, соответственно этот параметр будет виден CGI-скриптам, динамическим документам и так далее.

Замечания

  1. При использовании совместно с кэширующим модулем (mod_accel и так далее) включать работу mod_geo нужно только для тех документов, которым это реально нужно. В противном случае аргумент с именем страны будет приписан ко всем URL (включая картинки), что резко снизит эффективность кэширования.
  2. Расход памяти данным модулем сравнительно невелик - единицы мегабайт под таблицу в 40 тыс записей (размер на сегодня), при инициализации таблицы один раз в контексте сервера эти данные разделяются между всеми процессами и общий расход памяти в расчете на одну копию httpd копеечный.

 




Copyright © Lexa Software, 1996-2009.