У меня есть сервер с Apache, который часто получает нежелательные запросы прокси, в основном для таких сайтов, как www.yandex.ru
или www.baidu.com
. У меня нет mod_proxy
загружен, поэтому эти запросы фактически не работают. Но происходит то, что возвращаемый контент соответствует домашней странице моего веб-сайта, предположительно потому, что это виртуальный хост по умолчанию. Дело в том, что я бы предпочел не отправлять обратно полную страницу индекса тому, кто явно не интересуется моим сайтом; Я считаю это пустой тратой пропускной способности и ресурсов. Я бы предпочел ответить кодом ошибки HTTP (я полагаю, 400), чтобы сигнализировать, что мой сервер не работает как прокси, а также чтобы почувствовать себя лучше, когда я просматриваю журналы доступа ;-)
Какой рекомендуемый способ настроить Apache для возврата кода ошибки для прокси-запроса? (Под «прокси-запросом» я подразумеваю тот, который предоставляет абсолютный URL-адрес в строке HTTP-запроса.) И какой код ошибки HTTP наиболее подходит для этого?
Кстати, я думал, что об этом уже спрашивали, но я поискал и не нашел.
Вы можете просто настроить виртуальный хост по умолчанию, который отклоняет все запросы:
<VirtualHost *:80>
ServerName deny.all
<Location />
Order allow,deny
Deny from all
</Location>
</VirtualHost>
При этом все запросы, обращающиеся к виртуальному хосту, который явно не настроен, будут отклоняться с кодом ошибки HTTP 403 («Запрещено»).
Также не забудьте заглянуть на вики-страницу Apache на злоупотребление прокси Больше подробностей. Помимо приведенного выше решения, они также дадут вам подсказки для mod_rewrite
-основное решение.