Приветствую!
Имеется связка 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 и потом каждый из них добавить в группу для балансировки у главного (который и будет смотреть наружу). Идея рабочая, но не рациональная)