ПРОЕКТЫ 


  АРХИВ 


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]

выбор upstream при помощи map (remote_ addr, hostname)


  • To: nginx-ru@xxxxxxxxx
  • Subject: выбор upstream при помощи map (remote_ addr, hostname)
  • From: Костенко Евгений <nobody.mail@xxxxxxxxx>
  • Date: Tue, 17 Nov 2009 15:38:32 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:from:date:message-id :subject:to:content-type; bh=zfVZlELnpDYBeH/9Z2Xc5eFhoTA9T24f40bmSSZKg7M=; b=bam2PTV8bnxckhe4uR0M5dpUO83qEzqP0bJ6wt1TIevwliZSPPVRxDZCzCrq7eRcoB IgSc6UQxYfg1C38JRAeN/0PqtnUp3QvdC48FPPzjaRSUv9NQqIQUjoTwWVOuxnecSnMu MEX6ojPD9GexarTKS3FyjBmVOVc+ZWTL0T3Fs=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type; b=D1rWQVHFR/vI5M/iORqk7uoXigjlCwP9+bwdEX4yAzag+jfxb023XnFgTo4dOkpvb2 MhUJbYLzb9S8sNZgPBlzzVDt6Xwr7MwpGgoFP/h8/ssBBRvp7mntxJ3hWjn+lewJU3kV I1BvNa80vLQ0AEIiuR656PKhdWp2+uVI0Xhx8=

Всем доброго времени суток!

Для некоторых из vhosts необходимо выбирать на какой upstream ходить в зависимости от $remote_addr.

# uname -a
FreeBSD server3.nitgroup.org 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008     root@xxxxxxxxxxxxxxxxxxxxx:/usr/obj/usr/src/sys/GENERIC  i386

# nginx -V
nginx version: nginx/0.7.62
configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include' --with-ld-opt='-R /usr/local/lib -L /usr/local/lib' --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx-error.log --user=www --group=www --with-google_perftools_module --http-client-body-temp-path=/var/tmp/nginx/client_body_temp --http-proxy-temp-path=/var/tmp/nginx/proxy_temp --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp --http-log-path=/var/log/nginx-access.log --with-http_gzip_static_module --with-http_realip_module --with-http_ssl_module --with-http_stub_status_module --with-pcre

Собственно вопрос - баловство с map & $remote_addr позволит юзать proxy_pass с указанием ИМЕНИ,
декларированного upstream? Или только address:port? На примере

map $remote_addr $upstream_name {
    default        local;
    x.x.x.x        phpbackends;
    y.y.y.y        local;
}

и далее в конфиге

location / {
    proxy_pass         http://$upstream_name;
    <SKIPPED>
}

Эксперимент на практике приводит к перманентной выдаче 503 со стороны nginx.
Поиски в google привели к ruby-forum.com и предложенной Игорем реализации.
http://www.ruby-forum.com/topic/176958

map $remote_addr $back1 {
default 10.0.0.1:80;
192.168.1.1 10.0.0.2:80;
192.168.1.5 10.0.0.2:80;
}

server {
listen 80;
server_name bar.foo.com;

location / {
proxy_pass http://$back1$request_uri;
}
}
Но тут явное указание address:port, а в моем сюжете требуется указать named upstream
с группой адресов внутри.

Есть идеи как прикрутить задуманное, или сие изврат и работать не будет?

--
С Уважением,
Костенко Евгений

моб: +7(928)2961142
icq: 101241013
jabber: nobody.mail@xxxxxxxxx



 




Copyright © Lexa Software, 1996-2009.