HAProxy - 浏览器和 Curl 报告不一致的结果

HAProxy - Browser and Curl Reporting inconsistent results

环境:

我正在尝试设置一个 FE/BE 来支持:

来自一个 domain/uri 的连接被转发到指定端口上的另一个域(均为内部域)(所有后端应用程序都通过 SSL 并直接向它们工作):

 - sub1.domain-a.com/test1 -> newsub1.domain-b.com:30000
 - sub2.domain-a.com/test2 -> newsub2.domain-b.com:20000
 - ...

备注:

为了尝试这样做,这是我的配置:

haproxy.cfg(相关章节):

frontend f5
    bind *:443 ssl crt /etc/haproxy/c-and-k.pem
    mode http

    acl path_spgen path_beg -i /spgen
    use_backend be_spgen if path_spgen

    ## Rewrite the sending path to strip off 'spgen'
    reqrep ^([^\ :]*)\ /spgen/(.*)     \ /  if path_spgen

backend be_spgen
    mode http

    ## Attempt to fix sporadic 'This combination of host and port requires TLS' -- not working
    option httpchk HEAD / HTTP/1.1\r\nHost:\ test1.domain-b.com
    balance source

    server test1 test1.domain-b.com:30000 check ssl ca-file /etc/haproxy/ca.pem

当我尝试 curl 或浏览器到 https://sub1.domain-a.com/spgen 时,我最终得到 2 个错误中的 1 个:

如果我只是重新运行 curl 或刷新浏览器,我可以让它在足够多的错误之间切换 refreshes/re-runs。两个代理都是 运行ning 相同的配置(并且服务已多次重新启动以确保它已加载)。

所以我的问题有两个方面:

TIA!

你的代码对我有用并且去掉了 /spgen/。您的 reqrep 规则指定它将删除带有尾部斜杠的 /spgen/,因此它不适用于没有尾部斜杠的 /spgen。

为了测试,我设置了一个 Docker Compose 环境,其中 HAProxy 作为负载平衡器,jmalloc/echo-server 作为 Web 服务器。 echo-server显示HTTP请求报文,方便查看详情