node.js - 如何将 Node.js Express 应用程序部署在 HAProxy 后面?

标签 node.js express haproxy

我有一个在 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/

相关文章:

javascript - MEANJS 用户配置文件功能

node.js - 从开发环境将 React 应用程序部署到 Heroku 后,Fetch 请求中断 - 所有 GET 请求返回 index.html - 其他为 404

javascript - 如何将 Mongoose 值存储为日期?

node.js - Mongoose :.findById 不是函数

php - 需要使用 imap php 保存电子邮件副本,然后可以在 Outlook Express 中打开

HAproxy 域名到基于路径(url)路由的后端映射

javascript - 忽略 SailsJS 中 1 个特定模型的默认模型属性

javascript - node.js - 如何在expressjs中将数据从 Controller 传递到中间件?

logging - 使用ssl时如何获取haproxy详细的http日志?

reverse-proxy - 多个 reqirep haproxy