У меня есть конфигурация с двумя бэкенд-серверами, мне нужно перенаправить 301 на каждый сервер с внутренним URL на HTTP. Использовать SSL сложно, потому что я не могу установить SSL на Report Server в этой конфигурации. Кроме того, я не могу использовать виртуальный домен и общий IP для перенаправления трафика, потому что есть какая-то внутренняя проблема с Report Viewer при просмотре отчетов. Мне просто нужно перенаправить трафик на бэкенд-сервер, желательно с внутренним URL, но IP тоже подойдет.
На данный момент я знаю, как это сделать для одного конкретного хоста, но не для текущего сервера.
Конфигурация: Активная/Пассивная конфигурация для бэкэнда.
HA-Proxy версии 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
решение1
Это было достигнуто с помощью ACL и параметра srv_is_up.
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