
Ich erstelle eine Lösung mit mehreren Modulen. Jedes Modul ist eine ReactJs-App und ich versuche, nginx so zu konfigurieren, dass es in derselben Domäne veröffentlicht wird. Beispiele:
http://Anwendungsdomäne/Authentifizierung
http://Anwendungsdomäne/Administrator
http://Anwendungsdomäne/Armaturenbrett
http://Anwendungsdomäne/Verkäufe
Mein öffentliches Verzeichnis für Nginx bleibt so:
|---/var/www
|----/auth
|----/admin
|----/dashboard
|----/sales
wobei „Auth“, „Admin“, „Dashboard“ und „Sales“ Unterordner für jedes Projekt sind.
Meine Nginx-Server-Konfiguration:
server {
listen 9000 default_server;
listen [::]:9000 default_server;
server_name localhost;
index index.html;
location / {
root /var/www/auth;
}
location /admin {
root /var/www;
}
location /dashboard {
root /var/www;
}
location /sales {
root /var/www;
}
}
Die Unterordner der einzelnen Projekte haben eine ähnliche Struktur wie diese
Das Problem ist, wenn der Zugriffhttp://Anwendungsdomäne/adminBeispielsweise versucht die Anwendung, die statischen Dateien im Stammverzeichnis statt im Unterordner project zu laden.
GET http://localhost:9000/static/js/main.6314dcaa.js net::ERR_ABORTED
die richtige wäre "Dateien abrufen aufAdministratorUnterordner wie folgt:
GET http://localhost:9000/admin/static/js/main.6314dcaa.js
Was ist der bessere Ansatz, um die Nginx-Konfiguration hierfür zu korrigieren?
Antwort1
Ich denke, dass Sie Ihr Ziel erreichen können, indem Sie den Stammabschnitt jedes Standorts wie folgt erweitern:
location /admin {
root /var/www/admin;
}
location /dashboard {
root /var/www/dashboard;
}
location /sales {
root /var/www/sales;
}
Das wäre aber dasselbe, als ob man nur
location / {
root /var/www/
}
Da ein Aufruf von http://application-domain/admin
als ausgewertet würde /var/www/admin
.
Die erste Lösung würde alles andere verbergen, /var/www/
da beispielsweise keine Standortregel für den Zugriff vorhanden ist http://application-domain/private
.