Настройка балансировки с проксированием
sebor
nginx-forum at nginx.us
Wed May 14 11:59:01 UTC 2014
Приветствую!
Имеется связка tomcat+nginx. На томкате установлена opencms и имеется
мультисайтовость: т.е. имеется несколько http коннекторов:
и т.д.
Соответственно в Nginx'e имеется проксирование:
server {
listen 80;
server_name www.site1.ru;
gzip off;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml text/css;
access_log logs/host.www.site1.ru.access.log main buffer=32k;
location /export/ {
proxy_pass 127.0.0.1:8081/export/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /resources/ {
proxy_pass 127.0.0.1:8081/resources/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /opencms/ {
rewrite ^/opencms/(.*)$ www.site1.ru/$1 permanent;
}
location / {
root html;
index index.html index.htm;
proxy_pass 127.0.0.1:8081/opencms/;
client_max_body_size 200m;
client_body_buffer_size 128k;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
} и .т.п.
Т.е. на каждый сайт забинден свой порт.
Вопрос возник следующий: как сделать балансировку на кластер томкатов?
Допустим, я сделаю так:
upstream appservers {
server tomcat1
server tomcat2
}
server {
location / {
proxy_pass http://appservers;
}
}
Тогда как передать часть uri и порт? Как я понял из доки, написать
proxy_pass appservers:8081/export нельзя. Можно ли как-то решить это?
Была идея поставить на каждый томкат в кластере свой nginx и потом каждый из
них добавить в группу для балансировки у главного (который и будет смотреть
наружу). Идея рабочая, но не рациональная)
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,250076,250076#msg-250076
Подробная информация о списке рассылки nginx-ru