我有一个在 machine1 上的端口 3000 上运行的 Node.js Express 应用程序。我可以通过 machine1:3000 成功访问我的应用程序
我在 machine2 上运行 HAProxy。我更新了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)。
如何在代理后面部署 Express 应用程序?如何部署带有子文件夹的 Express 应用程序?我来自 java 世界,所有 Web 应用程序都在 servlet 容器内以 namespace 命名,从而为每个应用程序提供了自己的子文件夹。
谢谢
内森
最佳答案
/mynodeapp
不是子域。这是一个子文件夹。子域名为 mynodeapp.machine2
子域名托管与 Express 配合得很好,因为这不是 Express 的工作,而是前端的工作。
只要您的前端一致解析(对于子域,而不是子文件夹),express 就会从 HAproxy 接收预期的 url
关于node.js - 如何将 Node.js Express 应用程序部署在 HAProxy 后面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22413924/