ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Проксирование по referrer



Да, согласен, задача весьма нетривиальная. Оттого и прошу помощи. Предложеный вариант с использованием 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@xxxxxxxxxxxxxxx
<admin@xxxxxxxxxxxxxxx> написал:
Доброго всем дня.

Пытаюсь поднять сервер для проксирования некоего узкоспециализированого
приложения.  Аппликуха у себя формирует ссылки на него, с указанием в
качестве реферала ссылку на один из серверов за ним.
Т.е. в теории это должно выглядеть сл. образом - посетитель жмет на сайте
ссылку ведущую на 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@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.