Я бы хотел заблокировать IP-адреса с помощью geoip, кроме стран из белого списка И локальной сети. Первая часть работает безупречно, вторая - нет. Где-то в Интернете я нашел коды LH (локальный хост) и LN (локальная сеть), но они оба не работают.
Я использую стандартный практический код для блокировки.
Соответствующая часть 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 возвращает "-" при доступе к LAN IP, но добавляет "- да;" в блок geoip_county тоже не работает.
Я нашел решение - не знаю, «чистый» ли он. Просто перезапишите переменную $ allowed_country, если ранее выполнялось условие IP-адреса локальной сети.
geo $ lan-ip {
по умолчанию нет;
192.168.1.0/24 да;
}
и этот блок перед частью "# блокировать страны"
if ($ lan-ip = yes) {
установить $ allowed_country yes;
}
Вы также можете сделать следующее:
map $geoip_country_code $allowed_country {
default no;
'' yes;
US yes;
}
Хотя это относится не только к IP-адресам LAN / частной сети, но и ко всем адресам, которые не обрабатываются вашей базой данных GeoIP.