Re: Проксирование по referrer
Vadim Lazovskiy
vadim.lazovskiy at gmail.com
Mon Jun 24 04:55:07 UTC 2013
Здравствуйте.
Блок map только декларируется на уровне http. Вычисление значения
переменной происходит только при обращении к ней.
24 июня 2013 г., 8:38 пользователь admin at sysadmins.el.kg <
admin at sysadmins.el.kg> написал:
> Да, согласен, задача весьма нетривиальная. Оттого и прошу помощи.
> Предложеный вариант с использованием map не подходит потому, что map
> работает в блоке http, мне же критично запускать его из server.
>
> Вкратце о приложении - веб-страница, хрянящаяся на site[1-9].tld и
> загружаемая на сторонние сайты посредством <iframe>...</iframe>. На каждом
> бэкенде она разная, количество бэкендов растет в геометрической прогресии,
> а некоторые сайты, внедряющие к себе это приложение (напр. facebook)
> требуют ssl-шифрование. Чтобы избежать каши с ssl-сертификацией всех
> бэкендов было сочтено целесообразным использование прокси, шифрующего
> соединения, и проксирующего на http-бэкенды.
>
>
> как-то так можно попробовать вытащить
>>
>> map $http_referer $backend {
>> default -;
>> ~*(?<b>[^\;]+)(?:\;|$) $b;
>> }
>>
>>
>> это решит "грабли No.1", но задача в целом выглядит весьма запутанной.
>>
>>
>> 21 июня 2013 г., 16:45 пользователь admin at sysadmins.el.kg
>> <admin at sysadmins.el.kg> написал:
>>
>>> Доброго всем дня.
>>>
>>> Пытаюсь поднять сервер для проксирования некоего узкоспециализированого
>>> приложения. Аппликуха у себя формирует ссылки на него, с указанием в
>>> качестве реферала ссылку на один из серверов за ним.
>>> Т.е. в теории это должно выглядеть сл. образом - посетитель жмет на сайте
>>> ссылку ведущую на site.tld, прокси на этом самом site.tld разобрав
>>> $http_referrer извлекает из него ссылку к site[1-9].tld дописывает ему в
>>> куку адрес нужного из этих самых site[1-9].tld и отправляет на
>>> соответствующий сервер. Ну а дальнейшие обращения уже на основе кук.
>>>
>>> Грабли No.1: - предполагал указать адрес прокси в виде переменной:
>>>
>>> if ($http_referer ~* "*\.*") {
>>> set $backend "извлеченный из реферала домен";
>>> }
>>> location / {
>>> proxy_pass http://$backend;
>>> ...
>>> Только как?
>>>
>>> Грабли No.2: то же что и Грабли1 только с куками.
>>>
>>> ______________________________**_________________
>>> nginx-ru mailing list
>>> nginx-ru at nginx.org
>>> http://mailman.nginx.org/**mailman/listinfo/nginx-ru<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<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<http://mailman.nginx.org/mailman/listinfo/nginx-ru>
>
--
Best Regards,
Vadim Lazovskiy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20130624/643f467e/attachment-0001.html>
Подробная информация о списке рассылки nginx-ru