powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / РЕД ОС: cерверное ПО [закрыт для гостей] / NGINX: блокировка по GeoIP
2 сообщений из 2, страница 1 из 1
NGINX: блокировка по GeoIP
    #24
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
В официальной документации можно ознакомиться здесь https://nginx.org/ru/docs/http/ngx_http_geoip_module.html

Прежде всего необходимо наличие модуля nginx-mod-http-geoip2

В штатном репозитории РЕД ОС 8 модуль присутствует, поэтому
Код: BASH
1.
dnf install nginx-mod-http-geoip2.x86_64
Работа основывается на базах данных MaxMind GeoIP2.

Можно установить пакеты
Код: BASH
1.
dnf install geolite2-country.noarch geolite2-city.noarch geolite2-asn.noarch
но есть проблема: эти базы неактуальны и информация в них некорректна.

Ранее можно было зарегистрироваться на сайте MaxMind https://dev.maxmind.com/ и свободно скачивать актуальные базы GeoIP2, даже штатная программа для обновления имеется, но в данный момент доступ из России заблокирован. Обойти через впн, прокси - не получится. Звонок другу куда-то за пределами России поможет, но до первой загрузки из РФ. К сожалению.

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

Теперь к вопросу настройки.

Пример конфигурации, для директивы http
Код: Nginx
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
##
# GeoIP database path
##

geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {
    $geoip2_data_country_iso_code country iso_code;
}

##
# GeoIP Block
##

#map $geoip2_data_country_iso_code $allowed_country {
#    default no;
#    RU yes; # Russia
#}

map $geoip2_data_country_iso_code $allowed_country {
    default yes;
    SG no;
    BR no;
    PH no;
    HK no;
    #JP no;
    KE no;
    IR no;
}
Для директивы server
Код: Nginx
1.
2.
3.
4.
5.
#
    if ($allowed_country = no) {
        return 403;
    }
#
Ну и при необходимости подключается в настройках самого виртуального хоста

include /etc/nginx/conf.d/http/0000-server_geoip2;
Код: Nginx
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
server {
    listen      10.244.7.47:443 ssl;
    listen      10.244.7.49:443 ssl;
    http2 on;
    server_name red-forum.ru;

    include /etc/nginx/conf.d/http/0000-server_geoip2;
    include /etc/nginx/conf.d/http/limit_req_options_server;
    include /etc/nginx/conf.d/http/ssl_options;

    ssl_certificate             /srv/certs/red-forum.ru/fullchain.pem;
    ssl_certificate_key         /srv/certs/red-forum.ru/privkey.pem;
    ssl_trusted_certificate     /srv/certs/red-forum.ru/chain.pem;

    access_log  /var/log/nginx/http-red-forum.ru_ssl.log               main;
    error_log  /var/log/nginx/http-red-forum.ru_ssl_err.log            info;

    location / {
        #allow 193.26.135.0/24;
        #allow 83.167.113.102/32;
        #deny  all;

        include /etc/nginx/conf.d/http/block_bots;
        include /etc/nginx/conf.d/http/block_ips;
        include /etc/nginx/conf.d/http/block_ips_tor;

        proxy_pass              http://www_backend_st;
        proxy_redirect          off;
        #proxy_redirect         http:// $scheme://;

        proxy_set_header        Host                    $host;
        proxy_set_header        X-Real-IP               $remote_addr;
        proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto       $scheme;

        error_page 502 /maintenance.html;
        location = /maintenance.html {
            root /usr/share/nginx/html;
            index  maintenance.html;
            try_files $uri $uri/ /maintenance.html;
        }
    }
}
...
Рейтинг: 0 / 0
NGINX: блокировка по GeoIP
    #25
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Тут плохо, прежде всего, зависимость от баз данных MaxMind GeoIP2. Зависимость от одного человека, которы пока их регулярно скачивает и выкладывает на ГитХаб. Но репозиторий могут забанить, лабо он может прекратить выкладывать.

Я пытался найти на Российских ресурсах, что-нибудь вроде mirror yandex, но безуспешно. (могли бы, конечно, и скачать кто-нибудь вроде Минцифры, РКН, Яндекс и т.п.) У них то точно возможности обойти западные блокировки имеются.

Или может быть всё-таки где-то в Рунете подобное есть?
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / РЕД ОС: cерверное ПО [закрыт для гостей] / NGINX: блокировка по GeoIP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]