Назад | Перейти на главную страницу

haproxy перенаправить запрос ip на ip / путь

У меня есть один узел 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, которые могут запутаться с большими конфигурациями.