<div dir="ltr"><div>читаемость штука субъективная и скорее предмет холиваров. уверен, найдется непустое множество людей, для которых ваш вариант нечитаемый.</div><div><br></div><div>наверное, хороший ответ про недостаток читаемости может заключаться в том, что конфиг можно сопровождать комментариями, улучшающими читаемость.</div><div><br></div><div>а добавить кусок кода, который будет делать примерно то, что можно сделать без него, это усложнение на ровном месте и потенциальный источник ошибок<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">ср, 30 сент. 2020 г. в 10:44, Alexey Galygin <<a href="mailto:mif@me.com">mif@me.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;"><div>да, примеры были из habr, но и там к статье были претензии к map-решению</div><div>+ я специально усложнил пример регулярными выражениями</div><div><br></div><div>поэтому указанный map это не эквивалент</div><div><br></div><div>во вторых плохо читаемый хак и издевательство над линейной логикой</div><div>зачем такие костыли, если можно доделать нормальный if?</div><div><br></div><div><br><div><div><br><blockquote type="cite"><div>On 30 Sep 2020, at 05:14, fox <<a href="mailto:red-fox0@ya.ru" target="_blank">red-fox0@ya.ru</a>> wrote:</div><br><div><span style="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;text-decoration:none;float:none;display:inline">Троллишь?</span><br style="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;text-decoration:none"><br style="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;text-decoration:none"><span style="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;text-decoration:none;float:none;display:inline">map "$http_user_agent:$method:$uri" $block {</span><br style="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;text-decoration:none"><span style="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;text-decoration:none;float:none;display:inline">   "HackYou:POST:/admin/some/url"  "1";</span><br style="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;text-decoration:none"><span style="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;text-decoration:none;float:none;display:inline">}</span><br style="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;text-decoration:none"><br style="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;text-decoration:none"><span style="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;text-decoration:none;float:none;display:inline">if ($block) {</span><br style="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;text-decoration:none"><span style="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;text-decoration:none;float:none;display:inline">   return 403;</span><br style="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;text-decoration:none"><span style="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;text-decoration:none;float:none;display:inline">}</span><br style="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;text-decoration:none"><br style="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;text-decoration:none"><br style="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;text-decoration:none"><span style="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;text-decoration:none;float:none;display:inline">30.09.2020 02:24, Alexey Galygin пишет:</span><br style="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;text-decoration:none"><blockquote type="cite" style="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;text-decoration:none">не вкусовщина<br>часто очень не хватает простейших and/&& и or/||<br><br>вот чтобы такое не писать:<br><br>if($http_user_agent~ "HackYou"){ set$block"A"; } if($method= "POST") {<br>set$block"${block}B"; } if($uri~ “^/admin/some/url") {<br>set$block"${block}C"; } if($block= "ABC") { return403; }<br><br>vs условно:<br><br>if/eif ($http_user_agent~ “HackYou” && $method= “POST” && $uri~<br>“^/admin/some/url”) {<br>return403;<br>}<br><br><br><blockquote type="cite">On 29 Sep 2020, at 21:49, Илья Шипицин <<a href="mailto:chipitsine@gmail.com" target="_blank">chipitsine@gmail.com</a><br><<a href="mailto:chipitsine@gmail.com" target="_blank">mailto:chipitsine@gmail.com</a>>> wrote:<br><br>это вкусовщина же. вы готовы писать "eif", чтобы выразить свою мысль в<br>определенном синтаксисе.<br>сейчас вы точно так же выражаете свою мысль через map-ы.<br><br>по сути просто диалекты языка<br><br>вт, 29 сент. 2020 г. в 22:41, Alexey Galygin <<a href="mailto:mif@me.com" target="_blank">mif@me.com</a><br><<a href="mailto:mif@me.com" target="_blank">mailto:mif@me.com</a>>>:<br><br>   иногда трудно обойтись без дополнительной логики,<br>   которую ради такой мелочи отдавать на backend грустно<br><br>   и речь про улучшение поведения исключительно с обратной совместимостью<br><br>   если совсем никак, то можно добавить условно extended if — eif<br><br><br><blockquote type="cite">On 29 Sep 2020, at 19:47, fox <<a href="mailto:red-fox0@ya.ru" target="_blank">red-fox0@ya.ru</a><br></blockquote>   <<a href="mailto:red-fox0@ya.ru" target="_blank">mailto:red-fox0@ya.ru</a>>> wrote:<br><blockquote type="cite"><br>1) может, потому что конфиг - это не язык программирования?<br><br>2) изменение поведения сломает тысячи существующих систем.<br><br><br>29.09.2020 23:31, Alexey Galygin пишет:<br><blockquote type="cite">присоединяюсь к вопросу:<br><br>почему бы не сделать if нормальным? чтобы без артефактов… и<br></blockquote></blockquote>   немного мощнее<br><blockquote type="cite"><blockquote type="cite"><br>нам вот тоже приходится делать по несколько map, чтобы логику<br></blockquote></blockquote>   чуть более сложную построить…<br><blockquote type="cite"><blockquote type="cite">и это ужас<br><br><blockquote type="cite">On 29 Sep 2020, at 19:29, Sergey Kandaurov <<a href="mailto:pluknet@nginx.com" target="_blank">pluknet@nginx.com</a><br></blockquote></blockquote></blockquote>   <<a href="mailto:pluknet@nginx.com" target="_blank">mailto:pluknet@nginx.com</a>>> wrote:<br><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br><br><blockquote type="cite">On 29 Sep 2020, at 17:12, Ilya Evseev<br></blockquote></blockquote></blockquote></blockquote>   <<a href="mailto:nginx-forum@forum.nginx.org" target="_blank">nginx-forum@forum.nginx.org</a><span> </span><<a href="mailto:nginx-forum@forum.nginx.org" target="_blank">mailto:nginx-forum@forum.nginx.org</a>>><br>   wrote:<br><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br>Имеется nginx 1.19.2 со следующей настройкой:<br><br>  server {<br>      location / {<br>          if ($http_user_agent ~ "TestAgent") { }<br>          try_files $uri $uri/ /index.html;<br>      }<br>  }<br><br>Почему попадание в if меняет логику работы последующего<br></blockquote></blockquote></blockquote></blockquote>   try_files?<br><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br><a href="https://wiki.nginx.org/IfIsEvil" target="_blank">https://wiki.nginx.org/IfIsEvil</a><br><br>--<br>Sergey Kandaurov<br><br>_______________________________________________<br>nginx-ru mailing list<br><a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><span> </span><<a href="mailto:nginx-ru@nginx.org" target="_blank">mailto:nginx-ru@nginx.org</a>><br><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br></blockquote><br>_______________________________________________<br>nginx-ru mailing list<br><a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><span> </span><<a href="mailto:nginx-ru@nginx.org" target="_blank">mailto:nginx-ru@nginx.org</a>><br><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br><br></blockquote><br>_______________________________________________<br>nginx-ru mailing list<br><a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><span> </span><<a href="mailto:nginx-ru@nginx.org" target="_blank">mailto:nginx-ru@nginx.org</a>><br><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br></blockquote><br>   _______________________________________________<br>   nginx-ru mailing list<br>   <a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><span> </span><<a href="mailto:nginx-ru@nginx.org" target="_blank">mailto:nginx-ru@nginx.org</a>><br>   <a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br><br>_______________________________________________<br>nginx-ru mailing list<br><a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><span> </span><<a href="mailto:nginx-ru@nginx.org" target="_blank">mailto:nginx-ru@nginx.org</a>><br><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br></blockquote><br><br>_______________________________________________<br>nginx-ru mailing list<br><a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br><br></blockquote><br style="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;text-decoration:none"><span style="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;text-decoration:none;float:none;display:inline">_______________________________________________</span><br style="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;text-decoration:none"><span style="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;text-decoration:none;float:none;display:inline">nginx-ru mailing list</span><br style="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;text-decoration:none"><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;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">nginx-ru@nginx.org</a><br style="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;text-decoration:none"><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;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div></blockquote></div><br></div></div></div>_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote></div>