bot-verifier: Модуль проверки ботов поисковых систем для NGINX
Установка
Вы можете установить этот модуль в любом дистрибутиве на базе RHEL, включая, но не ограничиваясь:
- RedHat Enterprise Linux 7, 8, 9 и 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-bot-verifier
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-bot-verifier
Включите модуль, добавив следующее в верхнюю часть файла /etc/nginx/nginx.conf:
load_module modules/ngx_http_bot_verifier_module.so;
Этот документ описывает nginx-module-bot-verifier v0.0.14, выпущенный 2 февраля 2026 года.
Синопсис
http {
# Обязательно: Настройте модуль realip для доверия вашим прокси-серверам
set_real_ip_from 10.0.0.0/8;
set_real_ip_from 172.16.0.0/12;
set_real_ip_from 192.168.0.0/16;
real_ip_header X-Forwarded-For;
server {
location / {
bot_verifier on;
bot_verifier_redis_host localhost;
bot_verifier_redis_port 6379;
bot_verifier_redis_connection_timeout 10;
bot_verifier_redis_read_timeout 10;
bot_verifier_redis_expiry 3600;
bot_verifier_repsheet_enabled on;
}
}
}
Описание
Это модуль NGINX, предназначенный для проверки действительности актеров, утверждающих, что они являются индексаторами поисковых систем. Правильно отключать механизмы безопасности для действительных ботов поисковых систем, чтобы гарантировать, что ваши меры контроля не мешают позициям страниц в любых поисковых системах. Проблема в том, что заголовок User Agent не может быть доверен. Чтобы убедиться, что вы допускаете только действительных индексаторов поисковых систем, вы должны проверять в соответствии с их опубликованными стандартами. Этот модуль выполняет эту проверку и кэширует результаты, чтобы гарантировать, что вы не несете штрафы за проверку на каждом запросе.
Директивы
Следующие директивы используются только для конфигурации модуля.
bot_verifier
синтаксис: bot_verifier [on|off]
по умолчанию: off
контекст: location
фаза: access
Включает или отключает модуль. Модуль не будет действовать, если он не установлен на on.
bot_verifier_redis_host
синтаксис: bot_verifier_redis_host <string>
по умолчанию: localhost
контекст: location
фаза: access
Устанавливает хост Redis. Эта настройка используется для подключения к базе данных Redis, используемой для кэширования результатов поиска.
bot_verifier_redis_port
синтаксис: bot_verifier_redis_port <int>
по умолчанию: 6379
контекст: location
фаза: access
Устанавливает порт Redis. Эта настройка используется для подключения к базе данных Redis, используемой для кэширования результатов поиска.
bot_verifier_redis_connection_timeout
синтаксис: bot_verifier_redis_connection_timeout <int>
по умолчанию: 10
контекст: location
фаза: access
Устанавливает тайм-аут при подключении к Redis. Эта настройка используется для подключения к базе данных Redis, используемой для кэширования результатов поиска.
bot_verifier_redis_read_timeout
синтаксис: bot_verifier_redis_read_timeout <int>
по умолчанию: 10
контекст: location
фаза: access
Устанавливает тайм-аут при запросе к Redis. Эта настройка используется для подключения к базе данных Redis, используемой для кэширования результатов поиска.
bot_verifier_redis_expiry
синтаксис: bot_verifier_redis_expiry <seconds>
по умолчанию: 3600
контекст: location
фаза: access
Устанавливает тайм-аут при запросе к Redis. Эта настройка используется для подключения к базе данных Redis, используемой для кэширования результатов поиска.
bot_verifier_repsheet_enabled
синтаксис: bot_verifier_repsheet_enabled [on|off]
по умолчанию: off
контекст: location
фаза: access
Включает черный список неудачных актеров в Repsheet. Предполагает, что кэш Repsheet находится на уже настроенном сервере redis.
Проверка функциональности
Чтобы убедиться, что модуль работает правильно, вам нужно выполнить запрос, который вызовет случаи неудачи и успеха.
Сначала убедитесь, что realip настроен:
http {
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;
# ... остальная конфигурация
}
Чтобы вызвать случай неудачи, выполните следующий запрос:
curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html" localhost:8888
Это выполнит запрос, который идентифицирует себя как бот Google. Процедура обратного и прямого поиска не сработает, и вы получите ответ 403.
Чтобы убедиться, что проверка работает, когда бот идентифицирован, выполните следующий запрос:
curl -H "X-Forwarded-For: 66.249.66.1" -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html" localhost:8888
Когда модуль realip настроен на доверие 127.0.0.1 (localhost), он будет использовать значение заголовка X-Forwarded-For как IP клиента. Запрос должен пройти успешно и вернуть нормальный ответ, потому что 66.249.66.1 является действительным IP Google.
Настройка для разработчиков
Этот модуль содержит полностью самодостаточную среду разработки. Это сделано для того, чтобы работа над модулем не мешала другим установкам NGINX. Чтобы настроить среду, выполните команду script/bootstrap. Это создаст следующие директории:
vendor - Установка NGINX будет находиться здесь
build - Установка NGINX будет находиться здесь
Файл nginx.conf в корне этого репозитория будет связан с build/nginx/conf/nginx.conf, чтобы упростить изменения конфигурации. Вы можете запустить NGINX, используя следующую команду:
build/nginx/sbin/nginx
Файлы журналов доступны по адресу build/nginx/logs. Вы можете остановить сервер, выполнив
build/nginx/sbin/nginx -s stop
Если вы вносите изменения в модуль, вы можете перекомпилировать их, выполнив make compile. Не забудьте перезапустить NGINX после успешного завершения.
Запуск тестового набора
Этот репозиторий поставляется с тестовым набором, который использует библиотеку Test::Nginx. Чтобы запустить тест, вам нужно установить следующие библиотеки:
cpanm -S install Test::Nginx Test::Nginx::Socket
После установки библиотек просто выполните make, и набор тестов будет запущен. Если вы вносите изменения в этот модуль, пожалуйста, убедитесь, что вы запустили тестовый набор перед этим. Любые изменения, которые ломают тестовый набор, не будут приняты.
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-bot-verifier.