web-dev-qa-db-ja.com

haproxyリバースプロキシおよび仮想ホスト

古いUnixサーバーでホストされているある種の仮想ホストにリンクするリバースプロキシモードでhaproxy(1.5.8)を構成しようとしています。 haproxyはDMZおよびLAN上のWebサーバーにあります。

基本的に私は欲しい:

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:// abcd:5000 / に接続しようとするとvirtualhostエラーをスローし、 http:// abcd:を開くとWebページを表示します。 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でも可能ですか?誰かがこれを解決するために私を正しい方向に向けることができますか?

ご協力ありがとうございました。

ダブロン

3
Davron

これをバックエンドセクションに追加する必要があります。

http-request 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**
1
david luo
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
0
sangbeom kim