我在端口3000的machine1上运行了一个node.js express应用程序。我可以通过machine1:3000成功访问我的应用程序

我的HAProxy在machine2上运行。我更新了haproxy.cfg如下

frontend main *:80
    acl url_mynodeapp path_beg -i /mynodeapp

    use_backend mynodeapp if url_mynodeapp

backend mynodeapp
    mode http
    reqrep ^([^\ ]*\ /)mynodeapp[/]?(.*)     \1\2
    balance roundrobin
    server machine1 1.1.1.1:3000


我现在可以在machine2 / mynodeapp上运行我的应用程序。但是,所有相关链接现在都断开了,包括css和javascript(因为它们指向的是machine2而不是machine2 / mynodeapp)。

您如何在代理后面部署快速应用程序?如何部署带有子文件夹的快速应用程序?我来自Java世界,所有Web应用程序都在servlet容器内命名为空格,因此为每个应用程序提供了自己的子文件夹。

谢谢,

内森

最佳答案

/mynodeapp不是子域。这是一个子文件夹。子域为mynodeapp.machine2

子域托管可与express一起很好地工作,因为那不是express的工作,而是前端的工作。
只要您的前端解析一致(使用子域,而不是子文件夹),Express将从HAproxy接收预期的URL

10-08 00:20