Ich habe eine Konfiguration mit zwei Backend-Servern. Ich muss 301 auf jeden Server mit einer internen URL auf HTTP umleiten. Es ist schwierig, SSL zu verwenden, da ich in dieser Konfiguration SSL nicht auf dem Report Server installieren kann. Außerdem kann ich die virtuelle Domäne und die gemeinsam genutzte IP nicht verwenden, um den Datenverkehr umzuleiten, da beim Anzeigen von Berichten ein internes Problem mit dem Report Viewer vorliegt. Ich muss den Datenverkehr nur auf den Backend-Server umleiten, vorzugsweise mit einer internen URL, aber die IP ist auch in Ordnung.
Im Moment weiß ich, wie das bei einem bestimmten Host geht, aber nicht bei dem aktuellen Server.
Konfiguration: Aktiv/Passiv-Konfiguration für das Backend.
HA-Proxy Version 2.0.29-0ubuntu1
Ubuntu 20.04.5 LTS
Keepalived v2.0.19
frontend raporty bind 192.168.0..108:80 bind 192.168.0.108:443 ssl crt /etc/ssl/certs/haproxy.pem default_backend reportserver option forwardfor backend reportserver mode http balance roundrobin option httpchk uri /reports http-check expect status 401 http-response set-header X-Server %s http-request redirect code 301 location http://sql02.domain.local%[capture.req.uri] server sql01 192.168.0.11:80 check check fall 5 server sql02 192.168.0.111:80 check check fall 5 http-response set-header X-Server %s
Antwort1
Dies wurde durch die Verwendung der ACL und des Parameters srv_is_up verwaltet.
frontend raporty
bind 192.168.0.108:80
bind 192.168.0.108:443 ssl crt /etc/ssl/certs/haproxy.pem
http-response set-header X-Server %s
http-response set-header Host %s
default_backend reportserver
option forwardfor
backend reportserver
mode http
balance roundrobin
option httpchk uri /reports
http-check expect status 401
acl asql01 srv_is_up(reportserver/sql01)
acl asql02 srv_is_up(reportserver/sql02)
http-request set-header Host %s
http-response set-header Host %s
http-request redirect code 301 location http://sql01.domain.local%[capture.req.uri] if asql01
http-request redirect code 301 location http://sql02.domain.local%[capture.req.uri] if asql02
server sql01 sql01.domain.local:80 check check fall 5
server sql02 sql02.domain.local:80 check check fall 5
http-response set-header X-Server %s