У меня есть веб-сайт, который я не хочу, чтобы его просматривали целые страны. Веб-сайт работает на сервере LAMP. Как я могу этого добиться?
Используйте модуль mod_geoip. http://www.maxmind.com/app/mod_geoip
Например:
GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry
# ... place more countries here
Deny from env=BlockCountry
Вы можете использовать условие REMOTE_ADDR rewrite_mod, чтобы перенаправить заблокированных пользователей на одну страницу, описывающую тот факт, что им не разрешен вход, или просто выдать им ошибку 403.
RewriteCond %{REMOTE_ADDR} ^123\.123\.123\.[0-9]{3}$
RewriteRule .* ...
Чтобы получить диапазон IP-адресов для страны, получите Maxmind база данных например.
Вы можете отфильтровать IP-адреса интернет-провайдера страны. Существует множество баз геолокации, которые помогут вам определить страну пользователя по ip.
Проверьте IP-адрес и определите, в какой стране он находится, а затем заблокируйте его. Конечно неточно, но это что-то. Хотя в целом я не фанат этого; но, возможно, это требуется по какой-то юридической причине.
Я наткнулся на этот сайт, заявляющий о запрете страны,
ИМО, лучший способ заблокировать с помощью файла .htaccess
Вы можете использовать такие сервисы:
http://www.maxmind.com/app/geolitecountry
чтобы извлечь информацию о том, какие диапазоны IP-адресов принадлежат каким странам, и заблокировать их. Имейте в виду, что если вы заблокируете слишком много диапазонов на веб-сайте с высоким трафиком, вы можете увидеть высокую загрузку ваших брандмауэров.