Fehler beim Einrichten von Nginx für mehrere ReactJS-Apps auf demselben Server?

Fehler beim Einrichten von Nginx für mehrere ReactJS-Apps auf demselben Server?

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

Bildbeschreibung hier eingeben

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/adminals 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.

verwandte Informationen