Вот как выглядит парсер запроса:
http://lxr.evanmiller.org/http/source/http/ngx_http_parse.c#L104
После того, как парсер пройдет POST, он перейдет в состояние
sw_spaces_before_uri;
Далее, как только встретися буква H, то парсер прервется (строка 292):
switch (ch) {
case
Поспешил с ответом, nginx же вернет bad request. Конечный автомат, который
используется для парсинга request line обнаружит, что нет uri. Т.е. в логах
будет много ip для которых статус ответа - 400.
Posted at Nginx Forum:
http://forum.nginx.org/read.php?21,244293,244298#msg-244298
__
Пробовал и if ($request_uri ~* ^$) и if ($request_uri = "") - не ловит.
Потому и спрашиваю у гуру...
Posted at Nginx Forum:
http://forum.nginx.org/read.php?21,244293,244296#msg-244296
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.or
On Thursday 31 October 2013 17:35:22 megalodon wrote:
> if ($request_uri == "") {
> return 403;
> }
>
Очевидно до этого места дело не дойдет, поскольку "POST HTTP/1.1"
не является корректным HTTP-запросом, и сервер сразу же ответит
ошибкой "400 Bad Request".
Как отловить? Смотрите access_log,
if ($request_uri == "") {
return 403;
}
Posted at Nginx Forum:
http://forum.nginx.org/read.php?21,244293,244294#msg-244294
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Приветствую всех!
Началась ДДоС-атака на сайт, долбят запросами вида "POST HTTP/1.1" - то
есть без URI.
Можно ли как-то на уровне nginx выделить эти запросы с целью дальнейше
блокировки?
Posted at Nginx Forum:
http://forum.nginx.org/read.php?21,244293,244293#msg-244293
___