Временное использование заголовка 304 на Apache для сканеров

У меня есть клиент, у которого есть хостинг с 400 клиентскими сайтами, все из которых размещены через SuPHP в режиме CGI на Apache. Сисоп теперь пропал, и клиент призывает меня развернуть новую вещь PHP. Проблема в том, что нагрузка на сервер сейчас очень высока, и мы обнаружили, что это происходит из-за сканеров. В частности, у нас был один клиент, который жаловался на медленные веб-сайты, и мы подключили к его плагину заголовок 304 для большинства сканеров, и его сайт быстро заработал.

Мы хотели бы снизить эту нагрузку, выпустив глобальный заголовок 304 для всех сканеров, пропуская посетителей-людей. У меня есть длинный список ключевых слов пользовательского агента для ловушки.

Каков наилучший способ временно задействовать этот глобальный заголовок 304, при этом позволяя посетителям-людям получить доступ к информации?

Я имею в виду, что я мог бы развернуть 400 изменений файла.htaccess, но было бы идеально сделать это изменение как одну центральную конфигурацию Apache, и тогда оно автоматически затронет все сайты одновременно.

Самый последний:

Я думаю, что вижу в некоторых документах, что я могу подобрать некоторые пользовательские агенты, например, так:

RewriteCond %{HTTP_USER_AGENT} ^(google|spider|crawl|bot|yahoo) [NC]

Но тогда как мне соединить эти пользовательские агенты с заголовком 304? Я имею в виду, это синтаксис?

RewriteCond %{HTTP_USER_AGENT} ^(google|spider|crawl|bot|yahoo) [NC]
Header set 304 "HTTP/1.0 304 Not Modified"

1 ответ

Трудно предоставить конкретный комментарий без подробностей, но я предполагаю, что вы используете RewriteRules в файле.htaccess для выполнения этого поведения. Модуль mod_rewrite может быть активирован, и в конфигурации Apache могут использоваться такие объявления, как RewriteCond и RewriteRule.

Хороший способ сделать это, если вы делаете массовый виртуальный хостинг, - это создать простой миксин, содержащий ваши правила, и использовать функцию включения Apache, чтобы включить этот фрагмент конфигурации в каждый vhost, для которого сканеры создают проблему. Кроме того, существуют модули Apache, которые могут замедлять или блокировать отдельные IP-адреса, которые поглощают слишком много ресурсов. Примеры включают mod_throttle, mod_evasive и внешнюю утилиту fail2ban.

Другие вопросы по тегам