我的 HAProxy 配置有问题。我有几个后端服务器,在大多数情况下,重定向都正确完成。除了配置了 Rocket.Chat 的一个后端之外,它可以在任何地方工作。 HAProxy 正在重定向两个域和子域的流量,以纠正安装在我的两个裸机 Hyper-V 服务器上的虚拟机。一切都通过带有分割隧道的 OpenVPN 连接。所有域都是子域,均在 Cloudflare DNS 中正确设置。问题是一个重定向无法正常工作。我有很多后端,但只有一个,Rocket.Chat 被转发到不正确的后端。
前端和后端配置:
bind *:5000
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
#Frontend for traffic to VPN.
frontend https--in
bind 0.0.0.0:443 ssl crt /etc/cert/
mode http
option httplog
use_backend cloud if { hdr_dom(host) -i cloud.domain.dev } { dst_port 443 }
use_backend cloud if { hdr_dom(host) -i www.cloud.domain.dev } { dst_port 443 }
use_backend steldev if { hdr_dom(host) -i www.domain.dev } { dst_port 443 }
use_backend steldev if { hdr_dom(host) -i domain.dev } { dst_port 443 }
use_backend chat if { hdr_dom(host) -i chatx.domain.dev } { dst_port 443 }
use_backend adsb if { hdr_dom(host) -i adsb.domain2.xyz } { dst_port 443 }
use_backend monitoring if { hdr_dom(host) -i monitoring.domain.dev } { dst_port 443 }
use_backend itsm if { hdr_dom(host) -i itsm.domain.dev } { dst_port 443 }
use_backend itsm if { hdr_dom(host) -i itsm.domain2.xyz } { dst_port 443 }
use_backend board if { hdr_dom(host) -i board.domain2.xyz } { dst_port 443 }
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
balance roundrobin
server static 127.0.0.1:4331 check
---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
balance roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check
backend cloud
balance leastconn
option httpclose
cookie JSESSIONID prefix
server node1 10.11.12.2:80 cookie A check
backend monitoring
balance leastconn
option httpclose
cookie JSESSIONID prefix
server node1 10.11.12.7:80 cookie A check
backend steldev
balance leastconn
option httpclose
cookie JSESSIONID prefix
server node1 10.11.12.4:80 cookie A check
backend chat #That one is forwarding to steldev on 10.11.12.4:80, not chat.
balance roundrobin
server node1 10.11.12.5:3000 cookie A check
backend itsm
balance leastconn
option httpclose
cookie JSESSIONID prefix
server node1 10.11.12.9:80 cookie A check
backend board
balance leastconn
option httpclose
cookie JSESSIONID prefix
server node1 10.11.12.10:80 cookie A check
backend adsb
balance leastconn
option httpclose
cookie JSESSIONID prefix
server node1 10.11.12.3:88 cookie A check
我完全不知道 chatx.domain.dev 有什么问题(聊天后端)配置。
如果这很重要:CentOS 8.3,内核 4.18,HAProxy v1.8.23
你们有人看到我的配置有什么错误吗?我对 HAProxy 还很陌生。
答案1
线
use_backend steldev if { hdr_dom(host) -i domain.dev } { dst_port 443 }
表示 *.domain.dev
所以这条线
use_backend chat if { hdr_dom(host) -i chatx.domain.dev } { dst_port 443 }
不起作用,因为前一行起作用。
将行与 '-i 域.dev' 在最后一个位置。