Re: Регулярки для map
Kron
undying-m at yandex.ru
Wed Jun 26 10:09:45 UTC 2013
> Данная строка изымается nginx'ом из бд посредством модуля ngx_postgres
> исходя из того, что вернет как раз-таки та самая первая регулярка. Далее
> ее нужно раздробить на 3 части и если $протокол = http://, то
> спроксировать на $домен, если конечный сайт в подпапке - добавить $путь
> к $request_uri, если же $протокол = https:// - тогда просто сделать
> редирект.
Если я ничего не путаю, то после того как вы сделали запрос к базе, nginx возвращает результат и сам с ним уже никак не взаимодействует.
Здесь я вижу несколько вариантов решения:
1. каким то чудом после обращения к базе, что бы плагин выставлял дополнительные заголовки, например X-Query-Url: http(s)://test.local/(site([1-9])), и второй X-Accel-Redirect: ( а здесь указание на location nginx который будет парсить заголовок X-Query-Url и делать нужные действия)
2. использовать perl модуль и работу с БД вести внутри него.
3. наиболее адекватный, на мой взгляд, это написать легкий backend скрипт который будет делать всю работу.
26.06.2013, 08:21, "admin at sysadmins.el.kg" <admin at sysadmins.el.kg>:
> Благодарю за помощь с первой регуляркой - это как раз то, что доктор
> прописал. А вот во втором случае встроенными переменными не обойтись,
> поскольку указанный мной url
>
> http(s)://test.local/(site([1-9]))
>
> не является переданным от клиента (иначе проблемы №2 не было бы вообще).
> Данная строка изымается nginx'ом из бд посредством модуля ngx_postgres
> исходя из того, что вернет как раз-таки та самая первая регулярка. Далее
> ее нужно раздробить на 3 части и если $протокол = http://, то
> спроксировать на $домен, если конечный сайт в подпапке - добавить $путь
> к $request_uri, если же $протокол = https:// - тогда просто сделать
> редирект. Вот как-то так у меня задача поставлена.
>
> 25.06.2013 17:53, Kron пишет:
>> 1.
>>
>> map $request_uri $num {
>> "~*/pages/Test/(?<n>\d+)" $n;
>> }
>>
>> 2.
>>
>> http://nginx.org/ru/docs/http/ngx_http_core_module.html
>> читать про "встроенные переменные"
>>
>> 25.06.2013, 11:31, "admin at sysadmins.el.kg" <admin at sysadmins.el.kg>:
>>> Доброго всем!
>>>
>>> Помогите плз с регулярками для map'ов.
>>>
>>> Имеется строка типа:
>>> https://www.facebook.com/pages/Test/123456789123456?sk=app_987654321987654
>>> которая приходит как реферал. Нужно получить из нее первый блок цифр -
>>> "123456789123456".
>>>
>>> Также имеется строка http(s)://test.local/(site([1-9])) которую мне
>>> нужно разбить на 3 части - протокол, домен, uri. То есть получить
>>> отдельно "http(s)://", "test.local" и "/(site([1-9]))".
>>>
>>> Только что-то я не совсем понимаю как их составлять... :-[
>>>
>>> _______________________________________________
>>> 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
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
Подробная информация о списке рассылки nginx-ru