Мы в свое время делали не очень честный тест - делали конкуретный ab на страницу какого-то из сайтов. Вроде бы это был Wordpress. По количеству совершенных запросов примерно на 8% FPM обошел Apache.
Жаль, что данных конкретных не могу уже найти ... "Page generated in" кстати был почти одинаковым.
В принципе это ожидаемо, но с другой стороны мы не пробовали выкинуть из Apache все модули, кроме реально нужных. Быть может это как-то повлияло бы на скорость.
PS. В нашем случае PHP-FPM еще на unix сокете висел, поэтому сравнение было некорректным.
Панель на сервере случайно не DirectAdmin?
Так там человек pastebin'овские ссылки поскидывал с кусками-логами. Там в наглую SQL-инъекции понапиханы, можно наверное по ключевым словам SQL делать фильтрацию.
Pavel.Odintsov, спасибо. Скину цены клиенту - пусть созревает.
Это пожалуйста, клиент и хочет их сервера взять, но так там будет большой трафик между серверами их хотелось хотя бы парочками кабелем сцепить. Судя по тому, что сказал Den73, услуги по Colo и их серверами стоят одинаково.
Да я про это:
Я думал, что если сервера их, то для них меньше всего геморроя и такая несложная операция ну раза в два должна быть дешевле.
kgtu5, там не указаны символы начала и конца, поэтому будет поиск подстроки. Подстрока такая там есть, если это URI. Просто в логе не видно $request_method переменной.
Можно заодно какие-нибудь общие фильтры повесить, типа таких:
set $block_sql_injections 0; if ($query_string ~ "union.*select.*\(") { set $block_sql_injections 1; } if ($query_string ~ "union.*all.*select.*") { set $block_sql_injections 1; } if ($query_string ~ "concat.*\(") { set $block_sql_injections 1; } if ($block_sql_injections = 1) { return 403; } set $block_file_injections 0; if ($query_string ~ "[a-zA-Z0-9_]=http://") { set $block_file_injections 1; } if ($query_string ~ "[a-zA-Z0-9_]=(\.\.//?)+") { set $block_file_injections 1; } if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") { set $block_file_injections 1; } if ($block_file_injections = 1) { return 403; } set $block_common_exploits 0; if ($query_string ~ "(<|%3C).*script.*(>|%3E)") { set $block_common_exploits 1; } if ($query_string ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") { set $block_common_exploits 1; } if ($query_string ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") { set $block_common_exploits 1; } if ($query_string ~ "proc/self/environ") { set $block_common_exploits 1; } if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)") { set $block_common_exploits 1; } if ($query_string ~ "base64_(en|de)code\(.*\)") { set $block_common_exploits 1; } if ($block_common_exploits = 1) { return 403; }
Да дешево просто получается. Ну, если все честно, то вас можно только рекомендовать :) Просто у самого Лизвеба это достаточно дорого.
Не совсем по логам понял - это часть URL или POST?
Если URL можно хоть так:
Нет, буду тогда другие ДЦ изучать. Спасибо.