React приложения обычно предполагают, что они размещены в корневом каталоге (`/`) сервера. Когда вы переносите приложение в подкаталог, статические файлы подгружаются неправильно, так как пути к ресурсам в вашем собранном коде не соответствуют новому расположению.
Существуют определённые шаги, которые нужно выполнить для корректной работы приложения в подкаталоге.
1. Укажите базовый путь (base URL) в вашем React приложении во время сборки. Если вы используете Create React App, добавьте `"homepage": "/admin"` в ваш `package.json` перед сборкой приложения. Это позволит React знать, что ваше приложение теперь находится в `/admin`, и обновит все пути к статическим файлам соответственно.
2. Измените конфигурацию Nginx для правильного обслуживания содержимого подкаталога. Ваш конфиг уже пытается перенаправить запросы на `index.html` в /admin/, что правильно. Однако, если ваше приложение загружает статические файлы из другой папки (например, `static`), вам нужно будет добавить дополнительные `location` директивы для обслуживания этих файлов:
```nginx
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location /admin/ {
try_files $uri $uri/ /admin/index.html;
}
location /admin/static/ {
alias /var/www/html/admin/static/;
try_files $uri $uri/ =404;
}
# Возможно, вам также потребуется добавить дополнительные правила для других папок со статическими файлами
location / {
try_files $uri $uri/ =404;
}
}
```
3. Если ваше приложение использует client-side routing (например, с `react-router`), убедитесь, что Nginx корректно обрабатывает пути. Обычно `try_files $uri $uri/ /admin/index.html;` достаточно, но проверьте, что все маршруты React правильно переходят к `index.html` вашего приложения.
После внесения этих изменений, перезапустите Nginx командой `sudo systemctl restart nginx` (или аналогичной командой в зависимости от вашего дистрибутива Linux), чтобы применить новую конфигурацию. Теперь ваше React приложение должно загружаться и работать корректно из подкаталога `/admin/`.
Это основные шаги, которые нужно предпринять для размещения React приложения в подкаталоге на сервере с Nginx. Если проблемы остаются, возможно, требуется дополнительная отладка конфигурации Nginx или React приложения.