Ко мне очень часто заваливают всякие какеры с запросами вида:
65.75.245.219 - - [25/Apr/2010:19:47:05 +0600] "GET /phpmyadmin/main.php HTTP/1.0" 404 0 65.75.245.219 - - [25/Apr/2010:19:47:06 +0600] "GET /phpMyAdmin/main.php HTTP/1.0" 404 0 65.75.245.219 - - [25/Apr/2010:19:47:06 +0600] "GET /mysql/main.php HTTP/1.0" 404 0 65.75.245.219 - - [25/Apr/2010:19:47:07 +0600] "GET /PMA/main.php HTTP/1.0" 404 0
не надо долго думать над увиденным чтоб понять что такие запросы к серверу генерируются дабы пошукать в базе данных вашего ресурса. У меня не установлен PhpMyAdmin поэтому особо я никогда и не переживал по данному вопросу, но nginx был настроен так что при запросе несуществующей страницы происходил редирект на главную. Для человека перешедшего/набравшего неправильный URI такой редирект конечно более приятен чем 404 Not Found, но есть же наглые боты которые начинают генерировать по 1-5 запросов в секунду и жадно жрать все ту же главную страницу если запрашиваемого документа несуществует на сервере. Нам это грозит лишней нагрузкой на сервер и конечно же забиванием интернет канала бесполезным траффиком. После недолгого раздумья сделал чтобы при запросе несуществующей страницы nginx просто рвал соединение с клиентом без отдачи какой либо ошибки выдавая 444. Прописать это можно как на уровне сервера так и в location приведу свой вариант:
location / { root /srv/http; index index.html; #error_page 404 /; if ( !-e $request_filename ) { return 444; } }
Последние 2 строки означают что при запросе несуществующего файла nginx возвратит нестандартную ошибку 444. Что в свою очередь приведет к закрытию соединения. Браузеры эту ошибку не отображают, на экране просто ничего не отобразится в данном случае. Также существует директива empty_gif которая для клиента перешедшего по неправильной ссылке отдает однопиксельный прозрачный gif, браузер также не отобразит ничего.
Пример конфигурации для empty_gif взятый с sysoev.ru
location = /_.gif { empty_gif;
}