<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class="">да, примеры были из habr, но и там к статье были претензии к map-решению</div><div class="">+ я специально усложнил пример регулярными выражениями</div><div class=""><br class=""></div><div class="">поэтому указанный map это не эквивалент</div><div class=""><br class=""></div><div class="">во вторых плохо читаемый хак и издевательство над линейной логикой</div><div class="">зачем такие костыли, если можно доделать нормальный if?</div><div class=""><br class=""></div><div class=""><br class=""><div class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 30 Sep 2020, at 05:14, fox <<a href="mailto:red-fox0@ya.ru" class="">red-fox0@ya.ru</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Троллишь?</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">map "$http_user_agent:$method:$uri" $block {</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">   "HackYou:POST:/admin/some/url"  "1";</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">}</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">if ($block) {</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">   return 403;</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">}</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">30.09.2020 02:24, Alexey Galygin пишет:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">не вкусовщина<br class="">часто очень не хватает простейших and/&& и or/||<br class=""><br class="">вот чтобы такое не писать:<br class=""><br class="">if($http_user_agent~ "HackYou"){ set$block"A"; } if($method= "POST") {<br class="">set$block"${block}B"; } if($uri~ “^/admin/some/url") {<br class="">set$block"${block}C"; } if($block= "ABC") { return403; }<br class=""><br class="">vs условно:<br class=""><br class="">if/eif ($http_user_agent~ “HackYou” && $method= “POST” && $uri~<br class="">“^/admin/some/url”) {<br class="">return403;<br class="">}<br class=""><br class=""><br class=""><blockquote type="cite" class="">On 29 Sep 2020, at 21:49, Илья Шипицин <<a href="mailto:chipitsine@gmail.com" class="">chipitsine@gmail.com</a><br class=""><<a href="mailto:chipitsine@gmail.com" class="">mailto:chipitsine@gmail.com</a>>> wrote:<br class=""><br class="">это вкусовщина же. вы готовы писать "eif", чтобы выразить свою мысль в<br class="">определенном синтаксисе.<br class="">сейчас вы точно так же выражаете свою мысль через map-ы.<br class=""><br class="">по сути просто диалекты языка<br class=""><br class="">вт, 29 сент. 2020 г. в 22:41, Alexey Galygin <<a href="mailto:mif@me.com" class="">mif@me.com</a><br class=""><<a href="mailto:mif@me.com" class="">mailto:mif@me.com</a>>>:<br class=""><br class="">   иногда трудно обойтись без дополнительной логики,<br class="">   которую ради такой мелочи отдавать на backend грустно<br class=""><br class="">   и речь про улучшение поведения исключительно с обратной совместимостью<br class=""><br class="">   если совсем никак, то можно добавить условно extended if — eif<br class=""><br class=""><br class=""><blockquote type="cite" class="">On 29 Sep 2020, at 19:47, fox <<a href="mailto:red-fox0@ya.ru" class="">red-fox0@ya.ru</a><br class=""></blockquote>   <<a href="mailto:red-fox0@ya.ru" class="">mailto:red-fox0@ya.ru</a>>> wrote:<br class=""><blockquote type="cite" class=""><br class="">1) может, потому что конфиг - это не язык программирования?<br class=""><br class="">2) изменение поведения сломает тысячи существующих систем.<br class=""><br class=""><br class="">29.09.2020 23:31, Alexey Galygin пишет:<br class=""><blockquote type="cite" class="">присоединяюсь к вопросу:<br class=""><br class="">почему бы не сделать if нормальным? чтобы без артефактов… и<br class=""></blockquote></blockquote>   немного мощнее<br class=""><blockquote type="cite" class=""><blockquote type="cite" class=""><br class="">нам вот тоже приходится делать по несколько map, чтобы логику<br class=""></blockquote></blockquote>   чуть более сложную построить…<br class=""><blockquote type="cite" class=""><blockquote type="cite" class="">и это ужас<br class=""><br class=""><blockquote type="cite" class="">On 29 Sep 2020, at 19:29, Sergey Kandaurov <<a href="mailto:pluknet@nginx.com" class="">pluknet@nginx.com</a><br class=""></blockquote></blockquote></blockquote>   <<a href="mailto:pluknet@nginx.com" class="">mailto:pluknet@nginx.com</a>>> wrote:<br class=""><blockquote type="cite" class=""><blockquote type="cite" class=""><blockquote type="cite" class=""><br class=""><br class=""><blockquote type="cite" class="">On 29 Sep 2020, at 17:12, Ilya Evseev<br class=""></blockquote></blockquote></blockquote></blockquote>   <<a href="mailto:nginx-forum@forum.nginx.org" class="">nginx-forum@forum.nginx.org</a><span class="Apple-converted-space"> </span><<a href="mailto:nginx-forum@forum.nginx.org" class="">mailto:nginx-forum@forum.nginx.org</a>>><br class="">   wrote:<br class=""><blockquote type="cite" class=""><blockquote type="cite" class=""><blockquote type="cite" class=""><blockquote type="cite" class=""><br class="">Имеется nginx 1.19.2 со следующей настройкой:<br class=""><br class="">  server {<br class="">      location / {<br class="">          if ($http_user_agent ~ "TestAgent") { }<br class="">          try_files $uri $uri/ /index.html;<br class="">      }<br class="">  }<br class=""><br class="">Почему попадание в if меняет логику работы последующего<br class=""></blockquote></blockquote></blockquote></blockquote>   try_files?<br class=""><blockquote type="cite" class=""><blockquote type="cite" class=""><blockquote type="cite" class=""><br class=""><a href="https://wiki.nginx.org/IfIsEvil" class="">https://wiki.nginx.org/IfIsEvil</a><br class=""><br class="">--<br class="">Sergey Kandaurov<br class=""><br class="">_______________________________________________<br class="">nginx-ru mailing list<br class=""><a href="mailto:nginx-ru@nginx.org" class="">nginx-ru@nginx.org</a><span class="Apple-converted-space"> </span><<a href="mailto:nginx-ru@nginx.org" class="">mailto:nginx-ru@nginx.org</a>><br class=""><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" class="">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br class=""></blockquote><br class="">_______________________________________________<br class="">nginx-ru mailing list<br class=""><a href="mailto:nginx-ru@nginx.org" class="">nginx-ru@nginx.org</a><span class="Apple-converted-space"> </span><<a href="mailto:nginx-ru@nginx.org" class="">mailto:nginx-ru@nginx.org</a>><br class=""><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" class="">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br class=""><br class=""></blockquote><br class="">_______________________________________________<br class="">nginx-ru mailing list<br class=""><a href="mailto:nginx-ru@nginx.org" class="">nginx-ru@nginx.org</a><span class="Apple-converted-space"> </span><<a href="mailto:nginx-ru@nginx.org" class="">mailto:nginx-ru@nginx.org</a>><br class=""><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" class="">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br class=""></blockquote><br class="">   _______________________________________________<br class="">   nginx-ru mailing list<br class="">   <a href="mailto:nginx-ru@nginx.org" class="">nginx-ru@nginx.org</a><span class="Apple-converted-space"> </span><<a href="mailto:nginx-ru@nginx.org" class="">mailto:nginx-ru@nginx.org</a>><br class="">   <a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" class="">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br class=""><br class="">_______________________________________________<br class="">nginx-ru mailing list<br class=""><a href="mailto:nginx-ru@nginx.org" class="">nginx-ru@nginx.org</a><span class="Apple-converted-space"> </span><<a href="mailto:nginx-ru@nginx.org" class="">mailto:nginx-ru@nginx.org</a>><br class=""><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" class="">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br class=""></blockquote><br class=""><br class="">_______________________________________________<br class="">nginx-ru mailing list<br class=""><a href="mailto:nginx-ru@nginx.org" class="">nginx-ru@nginx.org</a><br class=""><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" class="">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br class=""><br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">_______________________________________________</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">nginx-ru mailing list</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="mailto:nginx-ru@nginx.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">nginx-ru@nginx.org</a><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div></blockquote></div><br class=""></div></div></body></html>