Согласование `статических` папок в проекте React / Django / nginx
Я работаю над довольно большим проектом с некоторыми коллегами, которые делают половину Django. Я работаю над половиной React (созданной с помощью create-react-app
, а затем выброшенной). Оба проекта живут в одном репозитории и согласованы с nginx, чтобы выглядеть как один проект с точки зрения конечного пользователя. Проблема, с которой я столкнулся, заключается в том, что оба проекта настаивают на том, чтобы их статические папки назывались static
, что создает проблемы с маршрутизацией в конфигурации nginx. В данный момент запросы React направляются на один порт proxy-pass
, а запросы Django - на другой порт, что в остальном работает нормально.
Что бы я хотел сделать:
переименовать переменную
PUBLIC_APP
в половине React, чтобы все статические файлы React можно было различать по урлам, скажем,/react-project/static
. До сих пор я не смог найти способ сделать это так, чтобы последовательно переименовать все статические файлы, и это, похоже, нерешенная ошибка React.настройте 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, но я вроде как безумно метался и не уверен, как я это сделал.
Надеюсь, это поможет кому-нибудь еще!