GeoIP и Cloudflare

iccup
На сайте с 01.05.2016
Offline
195
1287

Это прописал в nginx.conf

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

А это в domain.com.conf

server {
if ($allowed_country = no) {
return 444;
}
...

Там где сайт работает без cloudflare, там все норм. А там где cloudflare пользователи из заблокированных стран получают свободный доступ.

kimsufi.com ( https://www.kimsufi.com ) очень дешевые и качественные дедики https://clck.ru/gvF9p - антибот, использую уже 3 года.
iccup
На сайте с 01.05.2016
Offline
195
#1
galchenko:
По выхлопу как тогда должно работать? Непонятно.

Есть 2 домена, один на dns яндекса, другой на cloudflare. В первом случае правила nginx работают, а во втором - нет.

Mik Foxi
На сайте с 02.03.2011
Offline
1076
#2

iccup, если надо побыстрому накостылить блокировку - в php проверять $_SERVER['HTTP_CF_IPCOUNTRY'] это страна передаваемая клаудфларом.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
Оптимизайка
На сайте с 11.03.2012
Offline
396
#3

iccup, а nginx у вас учитывает реальные ip посетителей или в логи например толлько ip cloudflare пишет?

https://support.cloudflare.com/hc/en-us/articles/200170706-How-do-I-restore-original-visitor-IP-with-Nginx-

надо чтоб реальные ip были.

если вы хотите пользоваться модулем geoip из nginx, то вам необходимо задать в параметре geoip_proxy ip-шники cloudflare из списка по ссылке выше.

ну и наконец cloudflare сам делает geoip, так что можно просто воспользоваться этими данными, т.е. заменить вашу конструкцию в nginx.conf на:


map $http_cf_ipcountry $allowed_country {
default yes;
ID no;
IN no;
RU no;
}

В панели управления cloudflare для этого должен быть включен параметр ip geolocation:

P.S. cloudflare умеет сам блокировать по странам, поэтому в nginx можно вообще ничего не писать :D Но это за деньги.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
Mik Foxi
На сайте с 02.03.2011
Offline
1076
#4

Оптимизайка, еще надо при таком зоопарке настроек не заблочить страну через которую кдаудфлар проксирует, а там у него стран куча.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#5
foxi:
Оптимизайка, еще надо при таком зоопарке настроек не заблочить страну через которую кдаудфлар проксирует, а там у него стран куча.

О каком зоопарке идет речь? у cloudflare конечный список ip, который приведен в документации (если пользоваться geoip nginx, в таком случае будет учитываться ip пользователя), а если пользоваться его средствами (заголовок http_cf_ipcountry), то это страна пользователя, а не самого сервера cloudflare. Не понимаю, каким образом можно "заблокировать страну, через которую cloudflare проксирует".

neoks
На сайте с 17.03.2010
Offline
152
#6

Оптимизайка, в бесплатном есть 5 бесплатных Firewall Rules, в одном их них можно блокировать все нужны города.

iccup
На сайте с 01.05.2016
Offline
195
#7
Оптимизайка:
iccup
если вы хотите пользоваться модулем geoip из nginx, то вам необходимо задать в параметре geoip_proxy ip-шники cloudflare из списка по ссылке выше.

ну и наконец cloudflare сам делает geoip, так что можно просто воспользоваться этими данными, т.е. заменить вашу конструкцию в nginx.conf на:


map $http_cf_ipcountry $allowed_country {
default yes;
ID no;
IN no;
RU no;
}


В панели управления cloudflare для этого должен быть включен параметр ip geolocation:

P.S. cloudflare умеет сам блокировать по странам, поэтому в nginx можно вообще ничего не писать :D Но это за деньги.

А какая разница между "за деньги" и способом приведенным выше?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#8
iccup:
А какая разница между "за деньги" и способом приведенным выше?

Судя по этой документации Cloudflare:

https://support.cloudflare.com/hc/en-us/articles/200171426-Why-can-t-I-block-by-country-in-the-IP-Firewall-

блокировка по стране (не страница заглушки с капчей, а именно блокировка) доступна только для Enterprise plan. Возможно, что-то изменилось, я не в курсе.

А блокировку на уровне nginx можно сделать вне зависимости от тарифного плана cloudflare.

Если нужна именно блокировка, а не иные действия, то конечно лучше проводить её на уровне самого cloudflare, если в вашем тарифном плане это допустимо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий