我正在尝试在 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 服务器一起托管的工作指南?