Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


geoip2 nginx доступ в России и СНГ версия 3


geoip2 nginx доступ в России и СНГ версия 3

Добьем историю из серии статей:
https://snakeproject.ru/rubric/article.php?art=geoip2_rsng_25022025
https://snakeproject.ru/rubric/article.php?art=geoip2_11122025

Немного о дебаге

Скачал файл БД GeoLite2 в /var/lib/GeoIP/:
cd /var/lib/GeoIP/
wget https://git.io/GeoLite2-City.mmdb
wget https://git.io/GeoLite2-Country.mmdb

# cat /etc/nginx/nginx.conf
...
http {
...
    geoip2 /var/lib/GeoIP/GeoLite2-Country.mmdb {
        auto_reload 60m;
        $geoip2_data_registered_country_iso_code registered_country iso_code;
        # $geoip2_data_country_iso_code country iso_code;
    }
    geoip2 /var/lib/GeoIP/GeoLite2-City.mmdb {
        auto_reload 60m;
        $geoip2_data_state_code subdivisions 0 iso_code;
    }
    map "$geoip2_data_registered_country_iso_code:$geoip2_data_state_code" $allowed_reg {
        ~^RU: yes; #Россия
        ~^BY: yes; #Белоруссия
        ~^AM: yes; #Армения
        ~^KZ: yes; #Казахстан
        ~^KG: yes; #Кыргызстан
        UA:40 yes; #Севастополь
        UA:43 yes; #Крым
        UA:14 yes; #Донецкая область
        UA:09 yes; #Луганская область
        UA:23 yes; #Запорожская область
        UA:65 yes; #Херсонская область
        GE:AB yes; #Абхазия
        default no;
    }
...
    log_format  classic '$remote_addr - $geoip2_data_registered_country_iso_code:$geoip2_data_state_code $allowed_reg - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
...
    include /etc/nginx/sites-enabled/*.conf;
}

Теперь в access-лог во второе поле записывается содержимое переменных
$geoip2_data_registered_country_iso_code:$geoip2_data_state_code $allowed_reg,
т.е. упрощается диагностика, заблокирован ли клиент через geoip
и какие значения для его адреса при этом получены.

Пример строки лога после внесения изменений:
1.2.3.4 - GB:GA no - - [11/Dec/2025:18:52:36 +0300] "GET /doc/?doc=date_to=%D0%90678%D0% HTTP/1.1" 204 0 "-" "Mozilla/5.0 AppleWebKit/537.36(KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)" "-" 

Командой ниже можно в режиме онлайн выбирать из лога обращения, по которым произошла блокировка по geoip
tail -f -n 1 ssite.ru.access.log | grep ' no ' --line-buffered

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект