haproxy 反向代理和虚拟主机

haproxy 反向代理和虚拟主机

我正在尝试以反向代理模式配置 haproxy (1.5.8),链接到托管在旧 Unix 服务器上的某种虚拟主机。haproxy 将位于 DMZ 中,而 Web 服务器将位于 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

默认情况下,如果我尝试连接到http://abcd:5000/,如果我打开,将显示网页http://abcd: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 是否可行?有人能指点我如何解决这个问题吗?

感谢您的帮助。

达夫龙

答案1

您需要将其添加到您的后端部分:

http 请求设置标头主机 abcd

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**

答案2

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

相关内容