Nginx

Блок NGINX на основе географического положения

Блок NGINX на основе географического положения
Nginx - это высокопроизводительный, легкий веб-сервер с открытым исходным кодом, доступный для всех бесплатно. Он имеет огромное количество ценных функций по сравнению с другими легковесными серверами. Одной из таких функций является его geoip_module, который используется для определения географического местоположения, откуда приходит посетитель. По умолчанию он использует данные, предоставленные maxmind, для определения географического положения посетителя. Преимущество определения географического положения заключается в применении различных политик для разных географических местоположений, например, если бизнес доступен только в странах Северной Америки, с помощью geoip_module он может заблокировать всех других посетителей, прибывающих из других регионов. Это гарантирует, что бизнес не должен соблюдать правила и нормы, применяемые в разных регионах, такие как GDPR (Общее положение о защите данных).

Выполнение

Несмотря на то, что существует множество способов реализовать решение в системе, это руководство демонстрирует самый простой способ зарегистрировать его с минимальными усилиями.

  1. Очевидно, что Nginx должен быть установлен в системе до начала действий, описанных в этом руководстве. Однако установки Nginx недостаточно, так как он также требует установки geo_ip_module. Maxmind раньше выпускал свою базу данных в формате dat, но с недавнего времени он выпускается в формате mmdb. Это заставляет Nginx требовать новый geo_ip_module под названием ngx_http_geoip2_module. Однако это не требуется, так как старой базы данных по-прежнему достаточно. В любом случае, если nginx не установлен, настройте его с помощью следующих двух команд.
apt-get update
apt-get установить nginx
  1. Введите следующую команду, чтобы убедиться, что модуль http_geoip установлен.
nginx -V

  1. Существует несколько способов получить / создать базу данных, содержащую 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 / GeoIP
wget -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.Дат
  1. Настройте файл конфигурации Nginx следующим образом. Введите команду в первой строке терминала Linux, как обычно, и скопируйте остальные строки в nginx.conf файл. Убедитесь, что имя, указанное в / usr / share / GeoIP / GeoIP.Дат совпадает с файлом dat, хранящимся в папке usr / share / GeoIP. Несмотря на то, что в следующем примере он указывает только одну страну, в данном примере можно указать несколько кодов стран с одной строкой для каждого кода страны. Список доступных кодов стран для стран можно найти по этому адресу. http: // www.maxmind.com / app / iso3166.
нано / и т. д. / nginx / nginx.conf
geoip_country / usr / share / GeoIP / GeoIP.dat;
map $ geoip_country_code $ allowed_country
по умолчанию да;
ЛК нет;
  1. Откройте файл по умолчанию в любом текстовом редакторе (предпочтительнее nano, так как с ним его довольно легко редактировать), затем добавьте содержимое, начиная с 2nd строка между любым местом в блоке местоположения в файле по умолчанию. Код работает следующим образом: когда посетитель делает запрос на веб-сервер, nginx извлекает их IP-адреса и сопоставляет их записи, чтобы найти соответствующий код страны, если страна, указанная в блоке карты, совпадает, no присваивается переменная $ allowed_country, и тем самым проверка $ allowed_country позволяет управлять ответом. В этом руководстве он использует no, и, таким образом, посетителю запрещается видеть контент. Если есть несколько доменов, например .ком, .лк, или нукута.com или nucuta.net добавьте код, начиная со строки 3, в каждый «домен».conf файл также. Если nginx настроен правильно, файл соответствующего домена находится в папке с доступными сайтами.
нано / и т. д. / nginx / сайты-доступные / по умолчанию
if ($ allowed_country = no)
return 444;
  1. Перезагрузите сервер nginx с помощью следующей команды. В дальнейшем доступ к веб-серверу из любого домена Шри-Ланки (LK) заставляет веб-сервер ничего не возвращать, как показано на следующих снимках экрана. 444 в nginx ничего не представляет. Здесь также можно использовать любой другой код, например 302, 301, 404. Если указано 302 301, также должен быть указан URL-адрес для перенаправления посетителя.
systemctl перезапустить nginx

Заключение

Блокировка посетителей на основе их географического положения имеет решающее значение для работы некоторых предприятий из-за различных региональных правил и положений. Nginx удовлетворяет такие потребности с помощью модуля geo_ip. Он использует базы данных maxmind для поиска страны по ip-адресу посетителя. База данных работает как с Ipv4, так и с ipv6. Поскольку maxmind прекратил поддержку своего устаревшего формата базы данных dat, единственный способ использовать их данные - это либо преобразовать новый формат файла в файл dat, либо использовать уже преобразованный, либо использовать сторонний модуль для Nginx для поддержки формата файла mmdb. Предоставленный здесь скрипт python идеально подходит для преобразования, даже если требуется время, чтобы увидеть результат. Maxmind гарантирует более 99% точности определения страны по IP-адресу; следовательно, это незаменимый инструмент для любого бизнеса.

Эмуляция щелчков мыши с помощью мыши без щелчка в Windows 10
Использование мыши или клавиатуры в неправильной позе или чрезмерное использование может привести к множеству проблем со здоровьем, включая растяжение...
Добавьте жесты мыши в Windows 10 с помощью этих бесплатных инструментов
В последние годы компьютеры и операционные системы сильно эволюционировали. Было время, когда пользователям приходилось использовать команды для навиг...
Контроль и управление перемещением мыши между несколькими мониторами в Windows 10
Диспетчер мыши с двумя дисплеями позволяет контролировать и настраивать движение мыши между несколькими мониторами, замедляя ее движения возле границы...