Mein Plan
In meiner app, möchte ich das Backend vom Frontend trennen. Ich habe mehrere statische Seiten mit vue.js Zugriff auf eine API von einem Express-Server zur Verfügung gestellt. Alle statischen Dateien sollten von nginx geliefert werden.
So jetzt meine nginx-Konfigurationsdatei sieht wie folgt aus:Statische Websites mit nginx und Express.js - Authentification
http {
...
upstream backend {
server localhost:3000;
keepalive 64;
}
...
server {
...
location /api {
...
proxy_pass http://backend;
}
}
}
Also alles Anfrage /api
3000
per Express läuft im Hafen abgewickelt werden. Benutzer können sich über das Frontend anmelden, das auf die Backend-API zugreift.
Nun zum Problem:
Ich habe einige Websites (zB /dash
), die auch statisch sind, sondern nur für Benutzer zugänglich sein, die authentifiziert werden und mit einem bestimmten Benutzer (Authentifizierung per Express-Sitzung behandelt wird) Rolle (zB editor
).
Ein Benutzer, der kein editor
ist, sollte einen error 403
erhalten, wenn er auf /dash
zugreift, während für die anderen /dash
von nginx bedient werden soll.
Ich hoffe, ich war klar genug, es ist nicht einfach, mein Problem richtig auszudrücken. Ich schätze jede Hilfe und jeden Rat, vielleicht ist meine Herangehensweise keine gute Idee oder eine schlechte Praxis.
bearbeiten
Lösung kann in den Kommentaren der richtigen Antwort zu finden.
Danke für die Antwort. Ich habe bereits eine Authentifizierung implementiert und es wird per Express abgewickelt, ich habe einen Pass benutzt. Nginx sollte nicht rendern, sondern nur die Dateien bereitstellen. Die Dateien greifen dann mit ajax auf die API zu. Ich wollte Nginx verwenden, um die Dateien zu liefern, da es schneller sein soll. Aber ich möchte immer noch den Zugriff auf bestimmte Websites beschränken, für die ich mit einer Middleware überprüfen müsste, ob der Benutzer erlaubt ist. Für jede andere Seite ist jeder erlaubt, also benutze nur nginx für diese. Sorry für die Verwirrung ... –
Ich glaube, Sie sollten Nginx für Ihre gesamte Website in dieser Angelegenheit verwenden. Die Autorisierungs-Middleware sollte sicherstellen, dass die richtigen statischen Dateien gerendert und dem Benutzer bereitgestellt werden. Nginx ist nur eine Spiegelung Ihres Servers und nicht der tatsächliche Server. – Jesper
Ok, also übergeben Sie einfach den Proxy zum Ausdrücken? –