Бесконечные рекурсивные перенаправления с помощью 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.

Что я могу здесь сделать?

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