Раздел помощи SpaceWeb

Фильтрация запросов к сайту с помощью модуля GeoIP

03 окт, 2023

Модуль веб-сервера Apache GeoIP позволяет определить, из какой страны идет запрос к сайту. С помощью этого модуля можно ограничить доступ к сайту из определенной страны.

Для ограничения доступа необходимо добавить директивы в файл .htaccess. Директивы для веб-сервера Apache 2.4+ отличаются от Apache 2.2. В примерах указаны директивы для обеих версий веб-сервера.

 Важно:

- Нельзя использовать директивы для веб-сервера Apache 2.4+ и Apache 2.2 одновременно. Это может привести к некорректной работе сайта.

- Нельзя добавлять в файл .htaccess путь к файлу с базой данных GeoIP, например, так: GeoIPDBFile /usr/share/GeoIP/GeoIP.dat Это приведёт к ошибкам 500 на сайте. На тарифах виртуального хостинга база данных GeoIP прописана по умолчанию на уровне системы, указывать соответствующую настройку в .htaccess не нужно.

 

Разрешения запросов из определенных стран:

Apache 2.2

<IfModule mod_geoip.c>
RewriteEngine on
GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE RU GoodCountry
Order Allow,Deny
Allow from env=GoodCountry
</IfModule>

Где RU обозначение страны из которой будет доступ сайт. Можно указать несколько стран, например:

<IfModule mod_geoip.c>
RewriteEngine on
GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE RU GoodCountry
SetEnvIf GEOIP_COUNTRY_CODE BY GoodCountry
SetEnvIf GEOIP_COUNTRY_CODE KZ GoodCountry
Order Allow,Deny
Allow from env=GoodCountry
</IfModule>

В этом случае сайт будет доступен из России, Белорусии и Казахстана.

Apache 2.4

<IfModule mod_geoip.c>
RewriteEngine on
GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE RU GoodCountry
<RequireAny>
<RequireAll>
Require all denied
</RequireAll>
</RequireAny>
<RequireAny>
<RequireAll>
Require env GoodCountry
Require all granted
</RequireAll>
</RequireAny>
</IfModule>

Список кодов стран предоставлен в Википедии.


enlightened Полный список и подробности того, какие директивы доступны для редактирования через файл .htaccess, предоставлены в официальной документации PHP и веб-сервера Apache 2.4: