Временное использование заголовка 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.