Выполнение
Несмотря на то, что существует множество способов реализовать решение в системе, это руководство демонстрирует самый простой способ зарегистрировать его с минимальными усилиями.
- Очевидно, что Nginx должен быть установлен в системе до начала действий, описанных в этом руководстве. Однако установки Nginx недостаточно, так как он также требует установки geo_ip_module. Maxmind раньше выпускал свою базу данных в формате dat, но с недавнего времени он выпускается в формате mmdb. Это заставляет Nginx требовать новый geo_ip_module под названием ngx_http_geoip2_module. Однако это не требуется, так как старой базы данных по-прежнему достаточно. В любом случае, если nginx не установлен, настройте его с помощью следующих двух команд.
apt-get установить nginx
- Введите следующую команду, чтобы убедиться, что модуль http_geoip установлен.
- Существует несколько способов получить / создать базу данных, содержащую IP-адреса и соответствующие страны и названия городов. Установите базу данных geo_ip с помощью следующих команд. Использование этого метода упрощает установку базы данных geo_Ip в системе. Однако самый идеальный способ - загрузить свежую копию, так как они обновляются с последней информацией. Итак, воспользуйтесь одним из трех вариантов, приведенных ниже. Первого варианта хватит любому среднестатистическому пользователю, 2nd вариант - получить последнюю базу данных maxmind, третий вариант преобразует базу данных mmdb в соответствующий формат файла dat.
Это требует времени и ресурсов, поэтому не рекомендуется для слабых серверов. Однако, если обновленная база данных все же необходима, используйте вариант 2. Это экономит время и деньги при преобразовании файла, но безопасность не может быть гарантирована, поскольку он преобразован кем-то другим, а не какой-либо официальной стороной. Вариант 3 требует 3 пакета pip, setuptools, ipaddr, dcryptit. И он использует python 2 для обработки скрипта. Последняя строка преобразует zip-архив в .dat файл. Хотя упоминается о преобразовании формата файла mmdb в .dat, здесь он действительно преобразует файл CSV в .dat, поэтому для него требуется geoname2fips.csv, который поставляется вместе с пакетом файлов преобразования.
Опция 1
apt-get установить базу данных geoip libgeoip1Вариант 2
cd / usr / share / GeoIPwget -o maxmind.Дат.gz https: // бит.ly / 2Gh3gTZ
Gunzip Maxmind.Дат.gz
Вариант 3
cd / home /mkdir geolite2legacy /
git clone https: // github.com / sherpya / geolite2legacy
apt-get install python
apt-get установить python-pip
pip install setuptools
pip install ipaddr
pip install dcryptit
cd / usr / share /
mkdir GeoIP /
cd / usr / share / GeoIP /
wget https: // геолит.maxmind.ru / download / geoip / database / GeoLite2-Country-CSV.застегивать
pyton / главная / geolite2legacy / geolite2legacy.py -i / usr / share / GeoIP / GeoLite2-Country-CSV.zip -f
/ главная / geolite2legacy / geoname2fips.csv -o / usr / share / GeoIP / GeoLite2-Country.Дат
- Настройте файл конфигурации Nginx следующим образом. Введите команду в первой строке терминала Linux, как обычно, и скопируйте остальные строки в nginx.conf файл. Убедитесь, что имя, указанное в / usr / share / GeoIP / GeoIP.Дат совпадает с файлом dat, хранящимся в папке usr / share / GeoIP. Несмотря на то, что в следующем примере он указывает только одну страну, в данном примере можно указать несколько кодов стран с одной строкой для каждого кода страны. Список доступных кодов стран для стран можно найти по этому адресу. http: // www.maxmind.com / app / iso3166.
geoip_country / usr / share / GeoIP / GeoIP.dat;
map $ geoip_country_code $ allowed_country
по умолчанию да;
ЛК нет;
- Откройте файл по умолчанию в любом текстовом редакторе (предпочтительнее nano, так как с ним его довольно легко редактировать), затем добавьте содержимое, начиная с 2nd строка между любым местом в блоке местоположения в файле по умолчанию. Код работает следующим образом: когда посетитель делает запрос на веб-сервер, nginx извлекает их IP-адреса и сопоставляет их записи, чтобы найти соответствующий код страны, если страна, указанная в блоке карты, совпадает, no присваивается переменная $ allowed_country, и тем самым проверка $ allowed_country позволяет управлять ответом. В этом руководстве он использует no, и, таким образом, посетителю запрещается видеть контент. Если есть несколько доменов, например .ком, .лк, или нукута.com или nucuta.net добавьте код, начиная со строки 3, в каждый «домен».conf файл также. Если nginx настроен правильно, файл соответствующего домена находится в папке с доступными сайтами.
if ($ allowed_country = no)
return 444;
- Перезагрузите сервер nginx с помощью следующей команды. В дальнейшем доступ к веб-серверу из любого домена Шри-Ланки (LK) заставляет веб-сервер ничего не возвращать, как показано на следующих снимках экрана. 444 в nginx ничего не представляет. Здесь также можно использовать любой другой код, например 302, 301, 404. Если указано 302 301, также должен быть указан URL-адрес для перенаправления посетителя.
Заключение
Блокировка посетителей на основе их географического положения имеет решающее значение для работы некоторых предприятий из-за различных региональных правил и положений. Nginx удовлетворяет такие потребности с помощью модуля geo_ip. Он использует базы данных maxmind для поиска страны по ip-адресу посетителя. База данных работает как с Ipv4, так и с ipv6. Поскольку maxmind прекратил поддержку своего устаревшего формата базы данных dat, единственный способ использовать их данные - это либо преобразовать новый формат файла в файл dat, либо использовать уже преобразованный, либо использовать сторонний модуль для Nginx для поддержки формата файла mmdb. Предоставленный здесь скрипт python идеально подходит для преобразования, даже если требуется время, чтобы увидеть результат. Maxmind гарантирует более 99% точности определения страны по IP-адресу; следовательно, это незаменимый инструмент для любого бизнеса.