Бесконечные рекурсивные перенаправления с помощью nginx
Я докеризирую полный стек для работы в автономном режиме. Этот стек состоит из API Django (backend), набора статических файлов, построенных с помощью React (frontend) и Nginx для обслуживания обоих.
Раньше frontend и backend обслуживались собственным экземпляром Nginx, и все работало хорошо. Бэкэнд был доступен по адресу api.myhost.com
, а фронтэнд - по адресу myhost.com
.
Однако, теперь имеет смысл обслуживать frontend на myhost.com/
и backend на myhost.com/api/
.
И backend, и frontend имеют статические файлы. В частности, backend имеет статические файлы, используемые в админке Django (не очень важная информация).
Для достижения этой цели я пробовал множество различных конфигураций Nginx. Вот самая последняя из них:
Единственное, что здесь работает, это получение index.html и всех статических файлов, используемых в index.html. Другими словами, frontend работает, но не backend.
При запросе URL backend, например localhost/api/admin/
(или просто localhost/admin
, который перенаправляет на первый), получается бесконечный цикл: /api/admin/
перенаправляет на /api/admin/
перенаправляет на /api/admin/
и т.д.
И я просто не могу понять, как это исправить.
Я понимаю, что /api/example/
сначала будет опробован как /api/example/
. Означает ли это, что местоположение ^/api/(.*)$
будет сопоставлено повторно , если файл не будет найден, вызывая тем самым бесконечное перенаправление? Тогда почему /api/admin/
не совпадает с @api/admin/
?
Я не могу просто не проверить /api/$1
, потому что URI может быть /api/static/example.png
, который должен не проксироваться к API; он должен соответствовать /home/docker/static/api/example.png
.
Что я могу здесь сделать?