我有一个 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
通过该配置,我从地址 10.0.0.1:8080 获得了 tomcat 欢迎页面,其中没有 /app 地址。
答案1
您不能在服务器行上添加这样的路径,您需要在服务器行上方的监听块中使用重定向:
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,如果配置较大,则可能会变得混乱。