Блокировка пользователей из определенных стран Nginx Apache

Darkensand

Проверенные
Сообщения
47
Реакции
10
Баллы
8,105
Устанавливаем необходимые пакеты в системе:

Debian/Ubuntu

Код:
sudo apt-get install nginx-module-geoip

CentOS

Код:
yum install nginx-module-geoip

Обновим базу GeoIP до актуальной версии:

Код:
# mv /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIP.dat_bak

# cd /usr/share/GeoIP/

# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

# gunzip GeoIP.dat.gz

В каталоге с конфигурационными файлами web-сервера Nginx создадим файл block.map.include следующего содержания:

Код:
geoip_country /usr/share/GeoIP/GeoIP.dat;

map $geoip_country_code $allowed_country {

        default yes;

        CN no;

        VN no;

        TW no;

}
В данном примере мы запрещаем доступ к сайту пользователям из Китая, Вьетнама и Тайваня.

Для того, чтобы разрешить использование сайта только пользователям определенных стран, отредактируем конфигурационный файл следующим образом:

Код:
geoip_country /usr/share/GeoIP/GeoIP.dat;

    map $geoip_country_code $allowed_country {

        default no;

        RU yes;

        UA yes;



    }

Теперь сайт будет доступен только пользователям из России и Украины.

В конфигурационном файле /etc/nginx/nginx.conf в секции http добавляем следующую строку:

Код:
include include/block.map.include;

После чего в настройках хоста (секция server) вставляем следующую конструкцию:


Код:
 if ($allowed_country = no) {

            return 404;

        }

Применяем изменения:
Код:
RewriteEngine On

RewriteCond %{HTTP:GeoIp-Country-Code} !^(UA|PL)$

RewriteCond %{REQUEST_METHOD} POST

RewriteRule .* - [F]
Код:
# nginx -s reload


Для Apache

Приведем варианты решения некоторых типичных задач (во всех примерах указанные строки нужно добавить в начало файла .htaccess в корневой папке сайта):

Запретить доступ к сайту для посетителей из Китая:
Код:
RewriteEngine On
RewriteCond %{HTTP:GeoIp-Country-Code} ^(CN)$
RewriteRule .* - [F]

Сделать редирект с главной страницы в подраздел /ua/ для посетителей из Украины:

Код:
RewriteEngine On

RewriteCond %{HTTP:GeoIp-Country-Code} ^(UA)$

RewriteCond %{REQUEST_URI} ^/$

RewriteRule .* /ua/ [L,R=302]

Заблокировать POST запросы (комментарии/авторизация на сайте/постинг на форуме) со всех стран, кроме Украины и Польши:


Код:
RewriteEngine On

RewriteCond %{HTTP:GeoIp-Country-Code} !^(UA|PL)$

RewriteCond %{REQUEST_METHOD} POST

RewriteRule .* - [F]

Заблокировать GET запросы (комментарии/авторизация на сайте/постинг на форуме) со всех стран, кроме Украины и Польши:

Код:
RewriteEngine On 

RewriteCond %{HTTP:GeoIp-Country-Code} !^(UA|PL)$ 

RewriteCond %{REQUEST_METHOD} GET 

RewriteRule .* - [F]
 
Последнее редактирование:
А ещё TC, можно попросить не тянуть , кому нужно, тот найдёт и разберётся...
 
Блокировать целыми странами из-за ддоса... А вы потерять пользователей не боитесь?
[/Qесли у вас игровой сервер по сути заточен под русскую аудиторию тогда нет
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу