<div dir="ltr"><div dir="ltr"><br></div><div>А какая была бы более правильная логика? Я изначально хотел сделать 2 правила с (?)(?!) но почему в таком regex`е у меня всё равно не тот url, что я хотел просачивался в location (  location ~ (?^/.*.git/info/lfs/locks$)(?!^.*&lockservice=true$))</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">вс, 26 июл. 2020 г. в 15:00, <<a href="mailto:nginx-ru-request@nginx.org">nginx-ru-request@nginx.org</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">Сообщения, предназначенные для списка<br>
рассылки nginx-ru, отправляйте по адресу<br>
        <a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<br>
Для изменения параметров подписки или<br>
отписки используйте веб-страницу<br>
        <a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br>
или отправьте письмо, в теле или теме<br>
которого будет слово 'help', по адресу<br>
        <a href="mailto:nginx-ru-request@nginx.org" target="_blank">nginx-ru-request@nginx.org</a><br>
<br>
Адрес администратора этого списка<br>
рассылки:<br>
        <a href="mailto:nginx-ru-owner@nginx.org" target="_blank">nginx-ru-owner@nginx.org</a><br>
<br>
При ответе, пожалуйста, измените тему<br>
письма на более содержательную чем "Re:<br>
Содержание дайджеста списка рассылки<br>
nginx-ru..."<br>
В этом номере:<br>
<br>
   1. Возможно ли остановить<br>
      выполнение правил внутри<br>
      location/выйти из location (Роман Буренков)<br>
   2. Re: Возможно ли остановить<br>
      выполнение правил внутри<br>
      location/выйти из location (Сергей Олегович)<br>
<br><br><br>---------- Forwarded message ----------<br>From: "Роман Буренков" <<a href="mailto:panzercheg@gmail.com" target="_blank">panzercheg@gmail.com</a>><br>To: <a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>Cc: <br>Bcc: <br>Date: Sun, 26 Jul 2020 12:11:20 +0300<br>Subject: Возможно ли остановить выполнение правил внутри location/выйти из location<br><div dir="ltr"><span style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-size:15px">Я использую gitlab 12 СE ( 12.9.2 (ac5568eb5d8) ) и nginx из поставки gitlab (nginx 1.16.1 sha256:f11c2a6d )</span><div><font color="#242729" face="Arial, Helvetica Neue, Helvetica, sans-serif"><span style="font-size:15px"><br></span></font></div><div><font color="#242729" face="Arial, Helvetica Neue, Helvetica, sans-serif"><span style="font-size:15px">кусок моего location с правилами:<br></span></font><div><pre style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;font-size:13px;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px;color:rgb(36,39,41)"><code style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;background-color:transparent;white-space:inherit">location /test/lfs_lock_test.git/info/lfs/locks{
 if ( $args ~ "lockservice=true" ) {
  return 404;
  }
 rewrite ^/test/lfs_lock_test.git/(.*) /$1 break;
 proxy_pass <a href="https://localhost:5002" target="_blank">https://localhost:5002</a>;
 access_log  /var/log/gitlab/nginx/lfs_lock_access.log gitlab_access;
 error_log   /var/log/gitlab/nginx/lfs_lock_error.log debug;
}</code></pre><pre style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px;color:rgb(36,39,41)">я хочу обрабатывать все запросы на  ^.*.git/info/lfs/locks внутри location,<br>только если там не содержится lockservice=true в URI, в это случае, <br>просто выйти из location ( без 404 ) ,т.к. в файле, который я правлю <br>( /var/opt/gitlab/nginx/conf/<span style="font-family:arial,sans-serif;background-color:transparent;font-style:inherit;font-variant-ligatures:inherit;font-variant-caps:inherit;white-space:normal">gitlab-http.conf ) есть в т.ч. и такое:</span></pre><pre style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-size:13px;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px;color:rgb(36,39,41)"><pre style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px"><code style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;background-color:transparent;white-space:inherit">  location / {
    proxy_cache off;
    proxy_pass  <a href="http://gitlab-workhorse" target="_blank">http://gitlab-workhorse</a>;
  }</code></pre><pre style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px">т.е. если есть  lockservice=true в URI, то не делать proxy_pass и в принципе не применять правила из моего location

</pre>

</pre><pre style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;font-size:13px;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px;color:rgb(36,39,41)"><code style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;background-color:transparent;white-space:inherit">


 

</code></pre></div></div></div>
<br><br><br>---------- Forwarded message ----------<br>From: "Сергей Олегович" <<a href="mailto:shadow.tehb@gmail.com" target="_blank">shadow.tehb@gmail.com</a>><br>To: <<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a>><br>Cc: <br>Bcc: <br>Date: Sun, 26 Jul 2020 12:28:43 +0300<br>Subject: Re: Возможно ли остановить выполнение правил внутри location/выйти из location<br><u></u>

<div>
<div dir="auto">
<div dir="auto">Можно в if засунуть rewrite ... last; Тогда после выполнения условия будет совершён выход из этого location и поиск нового в соответствии с изменениями. Но мне сходу видятся проблемы, т.к. изначально логика построена неверно. </div><div dir="auto"><br></div>
<div id="gmail-m_-3352198298135230484aqm-original" style="color:black">

<div>
<div style="color:black">
<p style="color:black;font-size:10pt;font-family:sans-serif;margin:8pt 0px">Роман Буренков <<a href="mailto:panzercheg@gmail.com" target="_blank">panzercheg@gmail.com</a>> 26 июля 2020 г. 12:11:41 написал:</p>
<blockquote type="cite" class="gmail_quote" style="margin:0px 0px 0px 0.75ex;border-left:1px solid rgb(128,128,128);padding-left:0.75ex">
<div dir="ltr"><span style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-size:15px">Я использую gitlab 12 СE ( 12.9.2 (ac5568eb5d8) ) и nginx из поставки gitlab (nginx 1.16.1 sha256:f11c2a6d )</span><div><span style="font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;color:rgb(36,39,41)"><span style="font-size:15px"><br></span></span></div><div><span style="font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;color:rgb(36,39,41)"><span style="font-size:15px">кусок моего location с правилами:<br></span></span><div><pre style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;font-size:13px;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px;color:rgb(36,39,41)"><code style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;background-color:transparent;white-space:inherit">location /test/lfs_lock_test.git/info/lfs/locks{
 if ( $args ~ "lockservice=true" ) {
  return 404;
  }
 rewrite ^/test/lfs_lock_test.git/(.*) /$1 break;
 proxy_pass <a href="https://localhost:5002" target="_blank">https://localhost:5002</a>;
 access_log  /var/log/gitlab/nginx/lfs_lock_access.log gitlab_access;
 error_log   /var/log/gitlab/nginx/lfs_lock_error.log debug;
}</code></pre><pre style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px;color:rgb(36,39,41)">я хочу обрабатывать все запросы на  ^.*.git/info/lfs/locks внутри location,<br>только если там не содержится lockservice=true в URI, в это случае, <br>просто выйти из location ( без 404 ) ,т.к. в файле, который я правлю <br>( /var/opt/gitlab/nginx/conf/<span style="font-family:arial,sans-serif;background-color:transparent;font-style:inherit;font-variant-ligatures:inherit;font-variant-caps:inherit;white-space:normal">gitlab-http.conf ) есть в т.ч. и такое:</span></pre><pre style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-size:13px;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px;color:rgb(36,39,41)"><pre style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px"><code style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;background-color:transparent;white-space:inherit">  location / {
    proxy_cache off;
    proxy_pass  <a href="http://gitlab-workhorse" target="_blank">http://gitlab-workhorse</a>;
  }</code></pre><pre style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px">т.е. если есть  lockservice=true в URI, то не делать proxy_pass и в принципе не применять правила из моего location

</pre>

</pre><pre style="margin-top:0px;margin-bottom:1em;padding:12px 8px;border:0px;font-variant-numeric:inherit;font-variant-east-asian:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;font-size:13px;vertical-align:baseline;box-sizing:inherit;width:auto;max-height:600px;overflow:auto;border-radius:3px;color:rgb(36,39,41)"><code style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;box-sizing:inherit;background-color:transparent;white-space:inherit">


 

</code></pre></div></div></div>

<div>_______________________________________________</div>
<div>nginx-ru mailing list</div>
<div><a href="mailto:nginx-ru%40nginx.org" target="_blank">nginx-ru@nginx.org</a></div>
<div><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div>
</blockquote>
</div>
</div>


</div><div dir="auto"><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></div>