Re: Возможно ли остановить выполнение правил внутри location/выйти из location

Роман Буренков panzercheg на gmail.com
Пн Июл 27 06:16:29 UTC 2020


А какая была бы более правильная логика? Я изначально хотел сделать 2
правила с (?)(?!) но почему в таком regex`е у меня всё равно не тот url,
что я хотел просачивался в location (  location ~
(?^/.*.git/info/lfs/locks$)(?!^.*&lockservice=true$))

вс, 26 июл. 2020 г. в 15:00, <nginx-ru-request на nginx.org>:

> Сообщения, предназначенные для списка
> рассылки nginx-ru, отправляйте по адресу
>         nginx-ru на nginx.org
>
> Для изменения параметров подписки или
> отписки используйте веб-страницу
>         http://mailman.nginx.org/mailman/listinfo/nginx-ru
> или отправьте письмо, в теле или теме
> которого будет слово 'help', по адресу
>         nginx-ru-request на nginx.org
>
> Адрес администратора этого списка
> рассылки:
>         nginx-ru-owner на nginx.org
>
> При ответе, пожалуйста, измените тему
> письма на более содержательную чем "Re:
> Содержание дайджеста списка рассылки
> nginx-ru..."
> В этом номере:
>
>    1. Возможно ли остановить
>       выполнение правил внутри
>       location/выйти из location (Роман Буренков)
>    2. Re: Возможно ли остановить
>       выполнение правил внутри
>       location/выйти из location (Сергей Олегович)
>
>
>
> ---------- Forwarded message ----------
> From: "Роман Буренков" <panzercheg на gmail.com>
> To: nginx-ru на nginx.org
> Cc:
> Bcc:
> Date: Sun, 26 Jul 2020 12:11:20 +0300
> Subject: Возможно ли остановить выполнение правил внутри location/выйти из
> location
> Я использую gitlab 12 СE ( 12.9.2 (ac5568eb5d8) ) и nginx из поставки
> gitlab (nginx 1.16.1 sha256:f11c2a6d )
>
> кусок моего location с правилами:
>
> 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 https://localhost:5002;
>  access_log  /var/log/gitlab/nginx/lfs_lock_access.log gitlab_access;
>  error_log   /var/log/gitlab/nginx/lfs_lock_error.log debug;
> }
>
> я хочу обрабатывать все запросы на  ^.*.git/info/lfs/locks внутри location,
> только если там не содержится lockservice=true в URI, в это случае,
> просто выйти из location ( без 404 ) ,т.к. в файле, который я правлю
> ( /var/opt/gitlab/nginx/conf/gitlab-http.conf ) есть в т.ч. и такое:
>
>   location / {
>     proxy_cache off;
>     proxy_pass  http://gitlab-workhorse;
>   }
>
> т.е. если есть  lockservice=true в URI, то не делать proxy_pass и в принципе не применять правила из моего location
>
>
>
>
>
>
>
>
>
> ---------- Forwarded message ----------
> From: "Сергей Олегович" <shadow.tehb на gmail.com>
> To: <nginx-ru на nginx.org>
> Cc:
> Bcc:
> Date: Sun, 26 Jul 2020 12:28:43 +0300
> Subject: Re: Возможно ли остановить выполнение правил внутри
> location/выйти из location
> Можно в if засунуть rewrite ... last; Тогда после выполнения условия будет
> совершён выход из этого location и поиск нового в соответствии с
> изменениями. Но мне сходу видятся проблемы, т.к. изначально логика
> построена неверно.
>
> Роман Буренков <panzercheg на gmail.com> 26 июля 2020 г. 12:11:41 написал:
>
>> Я использую gitlab 12 СE ( 12.9.2 (ac5568eb5d8) ) и nginx из поставки
>> gitlab (nginx 1.16.1 sha256:f11c2a6d )
>>
>> кусок моего location с правилами:
>>
>> 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 https://localhost:5002;
>>  access_log  /var/log/gitlab/nginx/lfs_lock_access.log gitlab_access;
>>  error_log   /var/log/gitlab/nginx/lfs_lock_error.log debug;
>> }
>>
>> я хочу обрабатывать все запросы на  ^.*.git/info/lfs/locks внутри location,
>> только если там не содержится lockservice=true в URI, в это случае,
>> просто выйти из location ( без 404 ) ,т.к. в файле, который я правлю
>> ( /var/opt/gitlab/nginx/conf/gitlab-http.conf ) есть в т.ч. и такое:
>>
>>   location / {
>>     proxy_cache off;
>>     proxy_pass  http://gitlab-workhorse;
>>   }
>>
>> т.е. если есть  lockservice=true в URI, то не делать proxy_pass и в принципе не применять правила из моего location
>>
>>
>>
>>
>>
>>
>>  _______________________________________________
>> nginx-ru mailing list
>> nginx-ru на nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20200727/04026737/attachment-0001.htm>


Подробная информация о списке рассылки nginx-ru