bot-verifier: Модуль проверки ботов для индексации в NGINX
Установка на Debian/Ubuntu
Эти документы относятся к APT пакету nginx-module-bot-verifier, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте APT репозиторий, как описано в настройке APT репозитория.
- Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-bot-verifier
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия | Компонент | Архитектуры |
|-------------|-------------------|-------------|----------------|
| debian | bookworm | main | amd64, arm64 |
| debian | bookworm-mainline | main | amd64, arm64 |
| debian | trixie | main | amd64, arm64 |
| debian | trixie-mainline | main | amd64, arm64 |
| ubuntu | focal | main | amd64, arm64 |
| ubuntu | focal-mainline | main | amd64, arm64 |
| ubuntu | jammy | main | amd64, arm64 |
| ubuntu | jammy-mainline | main | amd64, arm64 |
| ubuntu | noble | main | amd64, arm64 |
| ubuntu | noble-mainline | main | amd64, arm64 |
Статус
[BETA] Этот модуль был протестирован на нескольких продуктивных веб-сайтах. Он еще не был оценен в условиях масштабирования. Если вы хотели бы рассмотреть возможность тестирования этого на большом масштабе, я буду рад помочь и выделить время на исправление любых проблем.
Сводка
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 <строка>
по умолчанию: 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 <секунды>
по умолчанию: 3600
контекст: location
фаза: access
Устанавливает тайм-аут при запросе к Redis. Эта настройка используется для подключения к базе данных Redis, используемой для кэширования результатов поиска.
bot_verifier_repsheet_enabled
синтаксис: bot_verifier_repsheet_enabled [on|off]
по умолчанию: off
контекст: location
фаза: access
Включает черный список неудавшихся участников в Repsheet. Предполагает, что кэш Repsheet находится на уже настроенном сервере Redis.
Проверка функциональности
Чтобы убедиться, что модуль работает правильно, вам нужно выдать запрос, который вызовет ошибки и успешные случаи. Чтобы вызвать ошибку, выполните следующий запрос:
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
Это подделает заголовок X-Forwarded-For и будет притворяться, что он исходит из действительного адреса 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, и набор тестов будет запущен. Если вы отправляете изменения в этот модуль, пожалуйста, убедитесь, что вы запустили тестовый набор перед этим. Любые изменения, которые нарушают работу тестового набора, не будут приняты.