korchasa
"просто и дешево" - имеет на мой взгляд, два неприятных момента. Одна загрузка страницы - это более одного запроса . Это еще "статика" в виде картинок, css, js и т.п.
первое впечатление, что в этом контексте надо применять ограничение на уровне обращений именно к динамике (потому что задирать планку допустимых запросов в секунду - это не решение). Но тогда... Все равно получаем потенциальную возможность завала запросов по статике.
второе впечатление - хорошо бы так фильтровать по некоторым, очевидно, не приоритетным подсеткам, опираясь на региональный (хотя бы) состав своей аудитории, а не просто всех и вся.
еще один момент -
http://sysoev.ru/nginx/docs/http/ngx_http_upstream.html - балансировка между "боевым" и работающей на его основе статической версией (если есть постгенерация в статику). Лично мне кажется правильным сочетать и ограничение по запросам и балансировку.
но... в сущности если вас валят (DDoS все же завал, а не избыточность обращений от того, что вас не умело парсят или от того, что в одной точке сошлись посетители, роботы поисковиков и парсеры разных "добрых саморитян") это не совсем вариант просто потому... что все равно все это принимает на себя уже ваш сервер, ваш nginx и т.п. (скажем так - при тестировании на нагрузку мы получали варианты, при которых просто забивается очередь соединений и дохнет сам nginx). В этом смысле "железки всякие от Cisco" это, пожалуй, наиболее правильный спаособ, если вас периодически именно атакуют нагрузкой. Но с железками этими надо обращаться как-то и т.п.
т.е. опять приходим обратно - а какую проблему на самом деле пытаемся решить: защита от целеноправленных атак или балансировка нагрузки?