Реверс прокси с параметрами
Igor Sysoev
is at rambler-co.ru
Tue Aug 4 15:11:02 MSD 2009
On Tue, Aug 04, 2009 at 01:26:05PM +0400, Александр Горбань wrote:
> ЗАДАЧА:
> Есть веб сервер и несколько backend серверов. Мне нужно настроить веб
> сервер таким образом, что бы в записимости от параметров в запросе он
> проксировал его на заданный backend сервер.
> Например: запрос http://myfront.com/index.html?ip=1.1.1.1&port=1111
> был проксирован к backend серверу 1.1.1.1 на порт 1111
> Я попытался сделать это при помощи следующей конфигурации:
> server {
> listen 80;
> server_name myfront.com;
> location / {
> if ($arg_ip = "") {
> return 400;
> }
> if ($arg_port = "") {
> return 400;
> }
> proxy_pass http://$arg_ip:$arg_port/;
- proxy_pass http://$arg_ip:$arg_port/;
+ proxy_pass http://$arg_ip:$arg_port$request_uri;
или
+ proxy_pass http://$arg_ip:$arg_port$uri;
> proxy_redirect default;
> }
> }
>
> Но при такой конфигурации по запросу пользователя
> http://myfront.com/about.html?ip=1.1.1.1&port=1111 на сервер 1.1.1.1
> приходит запрос http://1.1.1.1/, сервер 1.1.1.1 редиректит на
> http://1.1.1.1/index.html, а браузер пользователя редиректится на
> http://1.1.1.1/index.html
> Мне нужно, что бы браузер пользователя если и редиректился то только
> на myfront.com с параметрами ip=1.1.1.1&port=1111, что бы nginx знал,
> куда проксировать этот запрос.
>
> Я знаю, что можно настроить группу серверов, но мне этот вариант не
> подходит, потому что мне нужна гарантия, что конкретный запрос
> пользователя будет проксирован на конкретный сервер даже если
> пользователь будет делать этот запрос с разных адресов. В случае с
> директивой upstream такой гарантии нет.
>
> Большое спасибо за попощь!
>
> --
> С уважением, Горбань Александр
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list