Как заблокировать все запросы из некоторых нежелательных стран только в одном месте (nginx)
Я использую nginx и установил пакет geoip-database-contrib, чтобы заблокировать доступ к расположению /wp-admin из всех стран, кроме некоторых предпочитаемых.
location /wp-admin {
if ($allowed_country = no) {
return 403;
}
}
Работает нормально при попытке открыть эту страницу в браузере. Но все же я вижу в access.log много POST-запросов и в журналах worpdress неудачных запросов на вход из отклоненных стран. Можно ли использовать модуль geoip-database-contrib также для POST-запросов?
Я старался:
location /wp-admin {
if ($allowed_country = no) {
deny all;
}
}
но после перезагрузки nginx вообще не запускается. У вас есть идеи, как заблокировать все запросы только для location /wp-admin? Я не хочу блокировать трафик на уровне брандмауэра, потому что все страны должны иметь доступ к сети, но я хочу ограничить запросы администратора.
Я знаю, что могу разрешить запрос только для некоторых IP-адресов, но мне нужно получить доступ к администратору из большего количества мест, где у меня есть Dyn. назначенный IP.
Большое спасибо за ваши идеи.
0 ответов
sudo apt-get install geoip-database libgeoip1
Вам нужен этот дополнительный блок, поместите его в блок http{} над блоком server{}
# Whitelist Country to access Web admin
geoip_country /usr/share/GeoIP/GeoIP.dat; #Please download database and put the correct path here
map $geoip_country_code $allowed_country {
default no;
PH yes;
}
Затем внутри блока сервера {} вы можете поместить это
location /wp-admin {
if ($allowed_country = no) {
return 444;
}
}
Он работает с папкой (например, http://domain/folder_name), но когда я пытаюсь запретить определенный файл.php ( http://domain/folder_name_2/filename.php), он не работает, браузер принудительно загружает php файл!!! Я пытаюсь найти решение