У меня есть один узел haproxy и 3 сервера приложений (tomcat) за ним. Пользователи должны открывать http://10.0.0.1
(по IP-адресу), а затем будет перенаправлен на http://10.0.0.2/app
или http://10.0.0.3/app
или http://10.0.0.4/app
.
Текущая конфигурация haproxy:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
maxconn 50000
defaults
log global
mode http
option httplog
option dontlognull
# option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
retries 3
redispatch
contimeout 1s
clitimeout 2s
srvtimeout 3s
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
listen stats :1941
mode http
stats enable
stats hide-version
stats realm Haproxy\ Statistics
stats uri /
stats auth xxx:xxx
listen appfarm 10.0.0.1:80
mode http
stats enable
stats auth xxx:xxx
balance source
hash-type consistent
option httpclose
option forwardfor
# option httpchk HEAD /check.txt HTTP/1.0
server app01 10.0.0.2:8080/app check
server app02 10.0.0.3:8080/app check
server app03 10.0.0.4:8080/app check
С этой конфигурацией я получил приветственную страницу tomcat с адреса 10.0.0.1:8080 без / app в адресе.
Вы не можете добавить такой путь в строку сервера, вы захотите использовать перенаправление в своем блоке прослушивания над строками сервера:
redirect location /app if { url / }
и преобразуйте свои серверные строки в
server app01 10.0.0.2:8080 check
Видеть http://cbonte.github.io/haproxy-dconv/1.6/configuration.html#redirect для дальнейшего объяснения / примеров и обратите внимание, что в этом примере используются анонимные списки ACL, которые могут запутаться с большими конфигурациями.