Согласование `статических` папок в проекте React / Django / nginx

Я работаю над довольно большим проектом с некоторыми коллегами, которые делают половину Django. Я работаю над половиной React (созданной с помощью create-react-app, а затем выброшенной). Оба проекта живут в одном репозитории и согласованы с nginx, чтобы выглядеть как один проект с точки зрения конечного пользователя. Проблема, с которой я столкнулся, заключается в том, что оба проекта настаивают на том, чтобы их статические папки назывались static, что создает проблемы с маршрутизацией в конфигурации nginx. В данный момент запросы React направляются на один порт proxy-pass, а запросы Django - на другой порт, что в остальном работает нормально.

Что бы я хотел сделать:

  1. переименовать переменную PUBLIC_APP в половине React, чтобы все статические файлы React можно было различать по урлам, скажем, /react-project/static. До сих пор я не смог найти способ сделать это так, чтобы последовательно переименовать все статические файлы, и это, похоже, нерешенная ошибка React.

  2. настройте nginx так, чтобы все /static/ маршруты направлялись на прокси Django, а если не найдены там, то на прокси React. У меня очень мало опыта работы с nginx, и я не могу разобраться с синтаксисом. Я хочу что-то вроде этого:

  try_files $uri @django-project
  proxy_pass http://react-project:0000
}

@django-project {
  proxy_pass http://django-project:0000
}

Дайте мне знать, если я не дал достаточно информации / кода!

Ок, кажется, я нашел решение этой проблемы. Создав текстовый файл .env в корне проекта React и добавив туда PUBLIC_URL, затем ALSO добавив эту же строку в качестве basename в React router и homepage в package.json, я, кажется, заставил все статические файлы помещаться в папку react-project/static. Раньше я иногда получал дублирующийся react-project/react-project url, но я вроде как безумно метался и не уверен, как я это сделал.

Надеюсь, это поможет кому-нибудь еще!

Вернуться на верх