无法使用 haproxy 映射多个应用程序?

无法使用 haproxy 映射多个应用程序?

所以基本上我在单个 ubuntu 服务器上分别在端口 5000 和 30000 上运行 2 个不同的应用程序。这两个应用程序都必须使用 haproxy 进行映射。

我到目前为止已经尝试过

frontend http-in
    mode    http

    bind *:80
    bind *:443 ssl crt /etc/ssl/private/mydomain.pem
    http-request redirect scheme https code 301 if !{ ssl_fc }

    acl path-employeeList              path_beg -i /ProcessDesigner
    use_backend backend1               if path-employeeList

    acl path-employeeListfinal            path_beg -i /ProcessCore
    use_backend backend2               if path-employeeListfinal

backend backend1
    mode    http

    option  httplog
    option  forwardfor
    reqrep  ^([^\ :]+)\ /ProcessDesigner/?(.*)$  \1\ /\2

    server  backend1  206.189.22.155:30000


backend backend2
    mode    http

    option  httplog
    option  forwardfor
    reqrep  ^([^\ :]+)\ /ProcessCore/?(.*)$  \1\ /\2

    server  backend2 206.189.22.155:5000

现在这里的 /ProcessDesigner 和 /ProcessCore 只是一个别名/虚构的名字。目前https://206.189.22.155/ProcessDesigner只显示部分输出(我的意思是由于 503 错误服务不可用,页面的某些部分无法加载)并且第二个应用程序在https://206.189.22.155/ProcessCore也没有显示任何输出。(只是一个白色的空白屏幕)。

注意:如果我将下面提到的行添加到我的前端

acl path-employeeListnew              path_beg -i /
use_backend backend1               if path-employeeListnew

那么在这种情况下,应用程序https://206.189.22.155/ProcessDesigner工作正常,我可以看到完整的输出。但这个修复不是一个正确的修复,因为现在如果我点击https://206.189.22.155/ProcessCore我收到 404 not found 错误。唯一的情况是 https://206.189.22.155/ProcessCore当我使用以下配置时,效果很好-

frontend http-in
    mode    http

    bind *:80
    bind *:443 ssl crt /etc/ssl/private/mydomain.pem
    http-request redirect scheme https code 301 if !{ ssl_fc }

    acl path-employeeListnew              path_beg -i /
    use_backend backend2               if path-employeeListnew

    acl path-employeeListfinal            path_beg -i /ProcessCore
    use_backend backend2               if path-employeeListfinal 

    backend backend2
    mode    http

    option  httplog
    option  forwardfor
    reqrep  ^([^\ :]+)\ /ProcessCore/?(.*)$  \1\ /\2

    server  backend2 206.189.22.155:5000

因此,在任何给定时间,我只能映射单个应用程序,而不能映射多个应用程序。请帮忙,因为我认为应用程序本身没有什么需要更改的,而是我认为我的 haproxy 配置有问题。

答案1

虽然根据你提供的信息不可能确切知道,但我想说,绝大多数情况下,你必须更改应用程序,写出具有正确路径信息的相对 URL,以便访问它们。某些资源在通过子路径代理时无法加载,这表明它们使用的是绝对路径,而当通过子路径访问应用程序时,绝对路径是不正确的。

相关内容