Mod_GeoIP это модуль Apache, который можно использовать для получения географического местоположения IP адрес посетителя в Apache веб сервер. Этот модуль позволяет определить посетителя страна, организация и расположение. Это особенно полезно для Показ геообъявлений, Целевой контент, Борьба со спамом, Обнаружение мошенничества, Перенаправление / блокировка посетители на основе своей страны и многое другое.
Модуль GeoIP позволяет системным администраторам перенаправлять или блокировать веб-трафик в зависимости от географического положения клиента. Географическое положение узнается через IP-адрес клиента.
Mod_GeoIP имеет две разные версии, одна из них Бесплатно и еще один Оплаченный и использует MaxMind GeoIP / GeoCity базы данных.
Если вы хотите узнать больше различий между Бесплатно и Оплаченный версия, пожалуйста, посетите Maxmind.com.
В этой статье объясняется, как настроить и установить Mod_GeoIP модуль для Apache в RHEL и CentOS с использованием EPEL репозиторий с Менеджер пакетов YUM полезность.
Мы предполагаем, что у вас уже есть запущенный RHEL и CentOS система с рабочим НАПОЛЬНАЯ ЛАМПА (Linux, Apache, MySQL, и PHP) настраивать. Если нет, то прочтите наши статьи, в которых мы показали установку обеих операционных систем с НАПОЛЬНАЯ ЛАМПА.
По умолчанию mod_Geoip недоступно в RHEL / CentOS официальный репозиторий, поэтому нам нужно установить и включить сторонний EPEL репозиторий.
# yum install epel-release. # yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm [На RHEL 8]
Как только вы EPEL репозиторий включен в вашей системе, вы можете просто установить mod_geoip выполнив следующую команду со своими пакетами зависимостей.
# yum install mod_geoip GeoIP GeoIP-devel GeoIP-data zlib-devel.
Рекомендуется загрузить последнюю версию Geo City и База данных стран чтобы оставаться в курсе.
# cd / usr / share / GeoIP / # mv GeoIP.dat GeoIP.dat_org. # wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz. # wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz. # gunzip GeoLite2-Country.tar.gz. # gunzip GeoLite2-City.tar.gz.
После установки модуля откройте и отредактируйте основной файл конфигурации модуля с помощью текстового редактора командной строки, например vi, и активируйте модуль на сервере, как показано в отрывке ниже.
# vi /etc/httpd/conf.d/geoip.conf.
Установите строку GeoIPEnable из Выключенный к На. Также убедитесь, что вы добавили абсолютный путь к файлу базы данных GeoIP.
GeoIPEnable Вкл. GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache.
Перезапустите Apache сервис для отражения изменений.
# systemctl перезапуск httpd. ИЛИ. # перезапуск службы httpd
Однако не рекомендуется включать модуль GeoIP на уровне сервера. Вы должны включать модуль GeoIP только в или блоки, в которых вы фактически выполняете перенаправление или блокировку трафика.
Чтобы проверить mod_geoip модуль корректно работает с Apache, нам нужно создать PHP файл под названием testgeoip.php под Apache корневая директория (например / var / www / html).
# vi /var/www/html/testgeoip.php.
Вставьте в него следующий фрагмент php-кода.
Какой у меня IP-адрес - определить или получить мой IP-адрес php if (getenv (HTTP_X_FORWARDED_FOR)) {$ pipaddress = getenv (HTTP_X_FORWARDED_FOR); $ ipaddress = getenv (REMOTE_ADDR); echo "Ваш IP-адрес прокси:". $ pipaddress. "(через $ ipaddress)"; } еще {$ ipaddress = getenv (REMOTE_ADDR); echo "Ваш IP-адрес: $ ipaddress"; } $ country = getenv (GEOIP_COUNTRY_NAME); $ country_code = getenv (GEOIP_COUNTRY_CODE); echo "
Ваша страна: $ country ($ country_code)";
Теперь попробуйте вызвать файл с помощью веб-браузера (например http://localhost/testgeoip.php). Вы получите свой айпи адрес и Страна подробности.
База данных GeoIP обновляется в начале каждого месяца. Поэтому очень важно поддерживать базу данных GeoIP в актуальном состоянии. Чтобы загрузить последнюю версию базы данных, используйте следующую команду.
# cd / usr / share / GeoIP / # mv GeoIP.dat GeoIP.dat_org. # wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz. # wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz. # gunzip GeoLite2-Country.tar.gz. # gunzip GeoLite2-City.tar.gz.
Мы написали небольшой сценарий оболочки, который будет автоматически загружать последнюю версию базы данных GeoIP каждый месяц. Просто поместите любой из следующих скриптов под /etc/cron.monthly.
# Автоматическое обновление базы данных GeoIP. #! / bin / sh. cd / usr / share / GeoIP. mv GeoIP.dat GeoIP.dat_org. wget -q http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz. gzip -d -f GeoLite2-Country.tar.gz
#! / bin / sh GEOIP_MIRROR = " http://geolite.maxmind.com/download/geoip/database" GEOIPDIR = / usr / share / GeoIP. TMPDIR = DATABASES = "GeoLiteCity GeoLiteCountry / GeoIP asnum / GeoIPASNum GeoIPv6" если [-d "$ {GEOIPDIR}"]; затем cd $ GEOIPDIR if [-n "$ {DATABASES}"]; тогда TMPDIR = $ (mktemp -d geoipupdate. XXXXXXXXXX) echo "Обновление баз данных GeoIP ..." для db в $ DATABASES; do fname = $ (basename $ db) wget --no-verbose -t 3 -T 60 "$ {GEOIP_MIRROR} / $ {db} .dat.gz" -O "$ {TMPDIR} / $ {fname} .dat .gz "gunzip -fdc" $ {TMPDIR} / $ {fname} .dat.gz "> "$ {TMPDIR} / $ {fname} .dat" mv "$ {TMPDIR} / $ {fname} .dat" "$ {GEOIPDIR} / $ {fname} .dat" chmod 0644 "$ {GEOIPDIR} / $ { fname} .dat "done [-d" $ {TMPDIR} "] && rm -rf $ TMPDIR fi. фи
Приведенный ниже пример кода будет перенаправлять пользователей на основе кода страны, который мы установили на В ВИДЕ (Азия). Таким образом, вы можете перенаправить любых пользователей на основе их кода округа.
GeoIPEnable Вкл. GeoIPDBFile /usr/share/GeoIP/GeoIP.dat # Перенаправить на одну страну. RewriteEngine на. RewriteCond% {ENV: GEOIP_COUNTRY_CODE} ^В ВИДЕ$ RewriteRule ^ (. *) $https://www.tecmint.com$ 1 [R, L]
Этот пример будет блокировать пользователей на основе кода страны, установленного GeoIP. В приведенном ниже примере пользователи будут заблокированы В ВИДЕ (Азия) и нас (Соединенные Штаты) страны.
GeoIPEnable Вкл. GeoIPDBFile /usr/share/GeoIP/GeoIP.dat SetEnvIf GEOIP_COUNTRY_CODE В ВИДЕ BlockCountry. SetEnvIf GEOIP_COUNTRY_CODE нас BlockCountry. #... разместите больше стран здесь Deny from env = BlockCountry
В приведенном ниже примере будут допускаться только пользователи из нижеперечисленных стран.
GeoIPEnable Вкл. GeoIPDBFile /usr/share/GeoIP/GeoIP.dat SetEnvIf GEOIP_COUNTRY_CODE В ВИДЕ AllowCountry. SetEnvIf GEOIP_COUNTRY_CODE нас AllowCountry. #... разместите больше стран здесь Запретить от всех. Разрешить из env = AllowCountry
Для получения дополнительной информации о mod_geoip и его использование можно найти на http://www.maxmind.com/app/mod_geoip. Если у вас возникли проблемы с настройкой модуля mod_geoip, сообщите нам об этом в комментариях и не забудьте поделиться им с друзьями.