在子目录中部署 MEAN 堆栈应用程序

在子目录中部署 MEAN 堆栈应用程序

我正在尝试在 www.domain.com/nodeapp 上托管一个节点应用程序。我已经在 apache 服务器上托管了 www.domain.com 网站。我在 apache 配置中创建了一个反向代理。

ProxyPass /nodeapp http://localhost:3100/nodeapp
ProxyPassReverse /nodeapp http://localhost:3100/nodeapp

这是 MEAN 应用程序的 文件夹结构 下面是我的 node app.js 文件,我在其中链接 dist 文件夹中的 angular 应用程序(我使用该文件构建ng build --prod

app.use("/api/posts", postsRoutes);
app.use("/api/user", userRoutes);
app.use("/api/client", clientRoutes);

app.use("/", express.static(path.join(__dirname, "angular")));

app.use((req, res, next) => {
    res.sendFile(path.join(__dirname, "angular", "index.html"));
});

module.exports = app;

当我在端口 3000 上运行节点 server.js 文件时。只有 index.html 加载,其他静态文件抛出 404。

然后,我尝试在构建 angular 应用程序时添加一个空的 base-href,ng build --prod --base href这样可以正确加载应用程序的静态资源,但当我在 angular 应用程序中www.domain.com/nodeapp/auth/login直接在 URL 中导航时,显示的静态文件路径www.domain.com/nodeapp/auth/login/style.css显然是不正确的。例如,当使用反向代理访问时,API 链接 ( http://localhost:3100/api/posts) 不起作用。

我在这里做错了什么? 有没有将 MEAN 应用程序与 Apache 服务器一起托管的工作指南?

相关内容