ПРОЕКТЫ 


  АРХИВ 


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]

Реверс прокси с параметрами


  • To: nginx-ru@xxxxxxxxx
  • Subject: Реверс прокси с параметрами
  • From: Александр Горбань <alex.gorban@xxxxxxxxx>
  • Date: Tue, 4 Aug 2009 13:26:05 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type:content-transfer-encoding; bh=mDoLGZFNa1FpNku8arw5ZpDFoxuk6FI1UMZKDoox4P8=; b=KkLVZIKcJ1fAwxhql5snj9LtaXtF7+HirY47AuZp+QvRHlTxxT7QhLLmLWEF11tiq2 jtP4hEEk2BO27WQaUY5IUOWyV6HlSLy8pV2ODN1EY2wHOBKSFL8oXgnPf22snJsMWMD6 zm7+DcFi00u0FBun4S1W8Efqhu0hjW1FMffmw=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=axIn3wUuVp1n59e8pYJ8VaHilr4M2ctTvZpJiLBHL0+KmDoz1jxbefYvu6/SXv+6n4 36h/A0z/S6ON0LVQqAAUgk0y9QuDDvWBMch4lPnSjfpTXstcaAbFhBxJmMsGti9G/Isv kxJ8kEKQuFbEQbDiDc+06AY7PvYhkeaYswyBs=

ЗАДАЧА:
Есть веб сервер и несколько 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_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 такой гарантии нет.

Большое спасибо за попощь!

-- 
С уважением, Горбань Александр


 




Copyright © Lexa Software, 1996-2009.