
Я создаю решение с несколькими модулями. Каждый модуль — это приложение 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
, .