Re: Регулярные выражения в location

Иван Мишин simplebox66 at gmail.com
Thu Apr 2 06:10:22 UTC 2015


я бы предложил вот такой вариант

 location / {
                        if ($query_string ~
al=5f4ff3cb6478424481d6dfdf9d9a3696
<http://site.ru/Mydll.dll?al=5f4ff3cb6478424481d6dfdf9d9a3696>) {
                                return 418;
                        }
                        error_page 418 = @nameloc;
                        deny all;
                }

                location @nameloc{
                        internal;
                        proxy_pass http://other_serv;
                }

Соответственно все что не al=5f4ff3cb6478424481d6dfdf9d9a3696
<http://site.ru/Mydll.dll?al=5f4ff3cb6478424481d6dfdf9d9a3696> будет
выдавать ошибку 403, то что al=5f4ff3cb6478424481d6dfdf9d9a3696
<http://site.ru/Mydll.dll?al=5f4ff3cb6478424481d6dfdf9d9a3696> будет
проксироваться на другой сервер


1 апреля 2015 г., 20:28 пользователь Daniel Podolsky <onokonem at gmail.com>
написал:

> Для начала - query string не проверяется при поиске location
>
> Надо делать именованный, проверять аргумент в if и переходить в
> именованный. В этом виде if - не evil
>
>
> On Wednesday, April 1, 2015, s.ivanov <nginx-forum at nginx.us> wrote:
>
>> Необходимо сделать проксирование запросов вида
>> http://site.ru/Mydll.dll?al=5f4ff3cb6478424481d6dfdf9d9a3696 на другой
>> веб-сервер.При этом проксировать нужно только запросы указанного вида,
>> любые
>> другие в том числе и http://site.ru/Mydll.dll должны быть запрещены.
>>
>> 1.так
>> location ~* ^/Mydll.dll(.*) {
>> proxy_pass http://192.168.0.2:3000/$1$is_args$args;
>> }
>> срабатывает на любые запросы.
>>
>> 2. так
>> location ~* ^/Mydll.dll$ {
>> deny all;
>> }
>>
>> location ~* ^/Mydll.dll(.*) {
>> proxy_pass http://192.168.0.2:3000/$1$is_args$args;
>> }
>> Запрещено всё вообще, не редиректит разрешённые запросы.
>>
>> 3. так
>> location = /Mydll.dll\?al=(.*) {
>> proxy_pass http://192.168.0.2:3000/$1$is_args$args;
>> }
>> тоже не работает - правило не срабатывает.
>>
>> Вопрос: как составить регулярное выражение, чтобы правило в location
>> срабатывало только на URL разрешённого вида?
>> Спасибо.
>>
>> Posted at Nginx Forum:
>> http://forum.nginx.org/read.php?21,257789,257789#msg-257789
>>
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20150402/ec01afbc/attachment-0001.html>


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