
Ich versuche, eine Node-App auf www.domain.com/nodeapp zu hosten. Ich habe die Website www.domain.com bereits auf einem Apache-Server gehostet. Ich habe in der Apache-Konfiguration einen Reverse-Proxy erstellt.
ProxyPass /nodeapp http://localhost:3100/nodeapp
ProxyPassReverse /nodeapp http://localhost:3100/nodeapp
Dies ist MEAN app's
Ordnerstruktur
Und unten ist meine Node-Datei app.js, in der ich meine Angular-App im Ordner „dist“ verlinke (die ich erstellt habe mit 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;
Wenn ich die Datei node server.js auf Port 3000 ausführe, wird nur die Datei index.html geladen und bei anderen statischen Dateien tritt eine 404-Fehlermeldung auf.
Ich habe dann beim Erstellen der Angular-App versucht, einen leeren Basis-Href hinzuzufügen ng build --prod --base href
, der die App ordnungsgemäß mit statischen Ressourcen geladen hat, aber wenn ich in der Angular-App navigiere, z. B. www.domain.com/nodeapp/auth/login
direkt in der URL, wird der Pfad der statischen Datei angezeigt, www.domain.com/nodeapp/auth/login/style.css
was offensichtlich falsch ist. Die API-Links für z. B. ( http://localhost:3100/api/posts
) funktionieren nicht, wenn über einen Reverse-Proxy darauf zugegriffen wird.
Was mache ich hier falsch? Gibt es eine funktionierende Anleitung, in der eine MEAN-App neben einem Apache-Server gehostet wird?