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

обратный прокси haproxy и виртуальный хост

Я пытаюсь настроить haproxy (1.5.8) в режиме обратного прокси, связываясь с каким-то виртуальным хостом, размещенным на старом сервере Unix. Haproxy будет находиться в DMZ, а веб-сервер - в LAN.

В основном хочу:

https://a.domain.com/lo -> http://a.b.c.d:5000/lo
https://a.domain.com/lp -> http://a.b.c.d:5500/lp

По умолчанию сервер Unix выдаст ошибку виртуального хоста, если я попытаюсь подключиться к http: //a.b.c.d: 5000 /, и отобразит веб-страницу, если я открою http: //a.b.c.d: 5000 / lo.

frontend ft1
        mode http
        option forwardfor
        bind *:443 ssl crt /etc/ssl/certs.pem
        use_backend bk_Lo if { path_beg /lo }
        use_backend bk_Lp if { path_beg /lp }
        default_backend bk_Lo

backend bk_Lo
        mode http
        server lo a.b.c.d:5000

backend bk_Lp
        mode http
        server lp a.b.c.d:5500

Но я не могу придумать, как правильно переписать url, я всегда получаю ошибку 503. Возможно ли это даже с haproxy? Может ли кто-нибудь указать мне правильное направление, чтобы решить эту проблему?

Спасибо за помощь.

Даврон

вам нужно добавить это в свой бэкэнд-раздел:

http-запрос set-header Host a.b.c.d

frontend ft1
        mode http
        option forwardfor
        bind *:443 ssl crt /etc/ssl/certs.pem
        use_backend bk_Lo if { path_beg /lo }
        use_backend bk_Lp if { path_beg /lp }
        default_backend bk_Lo

backend bk_Lo
        mode http
        server lo a.b.c.d:5000
 **http-request set-header Host a.b.c.d**

backend bk_Lp
        mode http
        server lp a.b.c.d:5500
 **http-request set-header Host a.b.c.d**
global
    log         127.0.0.1 local0
    maxconn     2000
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats

defaults
    log                     global
    option                  dontlognull
    option                  redispatch
    retries                 3
    timeout connect         5000s
    timeout client          1200000s
    timeout server          1200000s

frontend http_proxy
    mode http
    bind *:443 ssl crt /etc/ssl/cert_for_a.pem crt /etc/ssl/cert_for_b.pem
    option httplog
    option http-server-close

    acl a_domain_url hdr_beg(host) a.domain.com
    use_backend bk_Lo if { path_beg /lo }

    acl work_url hdr_beg(host) b.domain.com
    use_backend bk_Lp if { path_beg /lp }

backend bk_Lo
    mode http
    server lo a.b.c.d:5000

backend bk_Lp
    mode http
    server lo a.b.c.d:5500