выбор upstream при помощи map (remote_addr, hostname)
Костенко Евгений
nobody.mail at gmail.com
Tue Nov 17 15:38:32 MSK 2009
Всем доброго времени суток!
Для некоторых из 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 at logan.cse.buffalo.edu:/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; <http://$back1$request_uri/;>
}
}
Но тут явное указание address:port, а в моем сюжете требуется указать named
upstream
с группой адресов внутри.
Есть идеи как прикрутить задуманное, или сие изврат и работать не будет?
--
С Уважением,
Костенко Евгений
моб: +7(928)2961142
icq: 101241013
jabber: nobody.mail at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20091117/0d5ea40c/attachment.html>
More information about the nginx-ru
mailing list