Welcome! Log In Create A New Profile

Advanced

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

July 27, 2020 02:56AM
Можно после if делать внутренний редирект на другой локейшен (если,
конечно, в вашем случае нет какой-то сложной дальнейшей обработки и вас
интересует только то, что записано в location / ) при помощи error_page. То
есть:

error_page 420 = @special_location;

location /test/lfs_lock_test.git/info/lfs/locks{
if ( $args ~ "lockservice=true" ) {
return 420;
}
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;
}

location @special_location {
proxy_cache off;
proxy_pass http://gitlab-workhorse;
}

пн, 27 июл. 2020 г. в 09:16, Роман Буренков <panzercheg@gmail.com>:

>
> А какая была бы более правильная логика? Я изначально хотел сделать 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
>
> _______________________________________________
> 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
Subject Author Posted

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

Роман Буренков July 26, 2020 05:12AM

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

imsystem July 26, 2020 05:30AM

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

Роман Буренков July 27, 2020 02:18AM

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

Maksim Kulik July 27, 2020 02:56AM

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

Роман Буренков July 27, 2020 06:46AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 74
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready