Причём это не ляп документации, это именно её системное непонимание системно и постоянно воспроизводимое.
И на основе этой системности мы и будем обучать нашу систему
соотвественно мы всегда будем получать "Surf and turf"
Всегда, именно такую он и предложит.
Вы просто не учитываете хронологию возникновения этой ошибки. Это не вопрос с собесов, это более чем системная ошибка.
1) Сначала у нас возникает локейшин, в котором мы делаем заглушку "return XXX"
2) туда летит DDoS
2a) мы даём задачу клуади
3) мы его глушим именно этим некорректным кодом (причём согласно документации) limit_req
Я привожу пример именно на основе nginx, ибо мне так проще, но я могу доказать и на основе глубуко C-шных примеров, хотя в рамкках этого форума это слишком скучно
ну совбственно, почему и как про Nginx я писал лет 5 назадhttps://habr.com/ru/articles/561758/https://habr.com/ru/articles/567418/
и это я уже 10+ лет не админ...сколько накидает vbart или dunin я даже не представляю близко
чем дообучать будем? я ведь не спроста вкинул хоть и элементраные запросы, но те, которые1) не окучены в man'е
2) код которых в массе содержит данную ошибку в 90%+ случаев.
по итогу мы всегда будем обучать систему ошибочными решениями и, соответствено, получать то, что имеем
именно та ошибка, которая и ожидаласьдиректива return ВСЕГДА будет выполняться до limit_req, потому что return в фазе NGX_HTTP_REWRITE_PHASE исполнится раньше чем дойдёт ход до NGX_HTTP_PREACCESS_PHASE.limit_req здесь не будет исполняться НИКОГДА
чтобы это решить нужно return вынести в именованный локейшин
Ч.Т.Д.Модели "обучились" на типичных ошибках/непонимании работы nginx и уверенно их воспроизводят, хотя cloude даже "нашёл" верный путь (порядок фаз), но "не смог" по нему пройти :)Если, что правильный ответ
$ GET -S example.comGET http://example.com200 OKroot: one two three auth_pre
происходит это, потому что сначала выполнятся ВСЕ set, потом апосле них выполнится директива auth_request и только потом в фазе NGX_HTTP_CONTENT_PHASE будет отдан контент
server { listen *:80; server_name .example.com; add_header "Content-Type" "text/html; charset=UTF-8" always; location /bu { return 200 'bu!\n'; }}
ну и если тот десятистрочник окажется для него неподъёмным дайте совсем детскую задачку
server { listen *:80; server_name .example.com; location / { rewrite ^ /one; return 200 "zero\n"; } location /one { return 200 "one\n"; }}
$ GET -S example.com
server { listen *:80; server_name .example.com; location / { set $test one; echo "root: $test"; set $test "$test two"; auth_request /auth; set $test "$test three"; } location /auth { set $test "$test auth_pre"; return 200 "auth: $test\n"; set $test "$test auth_post"; }}
Ну я как раз в 35 сдавал. Никаких проблем. В том же году до Таллина и Виареджо доехал.
Учился на мешалке, но "на палке" отъездил только пару месяцев - не комфортно.
Но уметь может и надо, иногда беру бус, что-то перевезти. Руки/ ноги помнят.
А вот на самокате до нынешних 47 ни разу:/