Ошибка при настройке nginx для нескольких приложений ReactJS на одном сервере?

Ошибка при настройке nginx для нескольких приложений ReactJS на одном сервере?

Я создаю решение с несколькими модулями. Каждый модуль — это приложение ReactJs, и я пытаюсь настроить nginx для публикации его на том же домене. Например:

http://application-domain/аутентификация
http://application-domain/админ
http://application-domain/панель приборов
http://application-domain/продажи

Мой публичный каталог для nginx остается таким:

|---/var/www
|----/auth
|----/admin
|----/dashboard
|----/sales

где auth, admin, dashboard и sales — это подпапки для каждого проекта.

Конфигурация моего сервера nginx:

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;
 }
}

Подпапка каждого проекта имеет похожую структуру:

введите описание изображения здесь

Проблема в том, когда доступhttp://application-domain/admin, например, приложение пытается загрузить статические файлы в корневую папку, а не в подпапку проекта

GET http://localhost:9000/static/js/main.6314dcaa.js net::ERR_ABORTED

правильно было бы получить файлы наадминподпапка вроде этой:

GET http://localhost:9000/admin/static/js/main.6314dcaa.js

Как лучше всего исправить конфигурацию nginx в этом случае?

решение1

Я думаю, то, чего вы пытаетесь добиться, можно сделать, расширив корневой раздел каждого местоположения следующим образом:

 location /admin { 
   root /var/www/admin;
 }

 location /dashboard {
   root /var/www/dashboard;
 }

 location /sales {
   root /var/www/sales;
 }

Но это было бы то же самое, что иметь только

location / {
  root /var/www/
}

Поскольку вызов http://application-domain/adminбудет оцениваться как /var/www/admin.

Первое решение скроет все остальное, /var/www/поскольку нет правила расположения, к которому можно было бы получить доступ, скажем http://application-domain/private, .

Связанный контент