我在端口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