Nginx гео-блокировка и разрешение локальных IP-адресов

Я бы хотел заблокировать IP-адреса с помощью geoip, за исключением стран из белого списка и локальной сети. Первая часть работает безупречно, вторая нет. Где-то в интернете я нашел коды LH (локальный хост) и LN (локальная сеть), но они оба не работают.

Я использую стандартный код Howto для блокировки.

Соответствующая часть http {} в nginx.conf:

geoip_country /usr/share/GeoIP/GeoIP.dat;
   map $geoip_country_code $allowed_country {
    default no;                              
    US yes;
   }

Соответствующая серверная часть {} в sites-available/default:

block countries
      if ($allowed_country = no) {
        return 444;
      }

Любые предложения будут высоко ценится!

Обновить:

Переменная $geoip_country_code возвращает "-" при доступе по IP-адресу локальной сети, но добавляет "- да;" в блок geoip_county тоже не работает.

2 ответа

Я нашел решение - не знаю, "чистое" ли оно. Просто перезапишите переменную $ allow_country, если ранее было найдено условие LAN IP.

geo $ lan-ip {
по умолчанию нет;
192.168.1.0/24 да;
}

и этот блок перед частью "#block стран"

if ($lan-ip = yes) {
установите $ enabled_country yes;
}

Вы также можете сделать следующее:

map $geoip_country_code $allowed_country {
    default no;
    '' yes;
    US yes;
}

Хотя это относится не только к IP-адресам локальной / частной сети, но и ко всем адресам, которые не обрабатываются вашей базой данных GeoIP.

Другие вопросы по тегам