Apache — mod_geoip

В данной статье будет вестись рассказ о настройке модуля mod_geoip для веб-сервера Apache. Данный модуль позволяет определить географическое положение подключившегося к серверу клиента по IP адресу. Зачем это нужно? Ответ прост — появляется возможность фильтрации клиентов по странам или автоматом направлять клиента на нужную часть сайта. К примеру, на данном сайте используется модуль, который сохраняет информацию о посетителях, оставивших комментарий (геоположение, ОС, браузер).
Вот информацию о геоположении как раз предоставляет модуль mod_geoip.

На момент написания статьи в портах доступна версия mod_geoip 1.2.8. Ставим модуль.

  1. # cd /usr/ports/www/mod_geoip2
  2. # make install clean

После установки модуля необходимо проверить включен ли он, для этого нужно посмотреть в главном конфигурационном файле Apache присутствует ли строчка:

  1. LoadModule geoip_module       libexec/apache22/mod_geoip.so

Для настройки модуля доступны следующие директивы:

Не полный список переменных, которые добавляет модуль в переменные окружения и в таблицу уведомлений Apache:

Пример конфигурации модуля:

    <ifmodule geoip_module>
      GeoIPEnable Off
      GeoIPDBFIle /usr/local/share/GeoIP/GeoIP.dat Standard
      GeoIPEnableUTF8 Off
      GeoIPOutput Env
      GeoIPScanProxyHeaders On
      GeoIPUseLastXForwardedForIP On
    </ifmodule>

Модуль достаточно сконфигурировать глобально, а потом подключать его в нужных виртуальных хостах, например, таким образом:

    <virtualhost *:80>
    <ifmodule geoip_module>
      GeoIPEnable On
      <filesmatch ".(gif|jpe?g|png|ico|bmp|css|xml|pdf|rar|jar|js|doc|docx|html|xhtml)$">
        GeoIPEnable Off
      </filesmatch>
    </ifmodule>
    </virtualhost>

При желании там же можно изменить и другие параметры. Как говорилось ранее с помощью информации от модуля можно ограничивать доступ по странам, например для какого-нибудь виртуального хоста можно сделать:

    <ifmodule geoip_module>
      GeoIPEnable On
    </ifmodule><ifmodule setenvif_module>
      SetEnvIf GEOIP_COUNTRY_CODE RU AllowCountry
    </ifmodule>
      <directory /path/to/www>
        Deny from all
        Allow from env=AllowCountry
      </directory>

Таким образом, доступ к сайту будет только у жителей РФ. На официальном сайте можно скачать дополнительные базы (например, чтобы, отображался еще и город).

Exit mobile version