Траефик и Джанго на подпути

avatar
school_guy
1 июля 2021 в 19:48
230
1
0

Следующая настройка, которую я хочу выполнить внутри Docker с помощью Traefik и Django:

  • http://домен/приложение1
  • http://домен/приложение2

Мой docker-compose.yml содержит следующие этикетки для контейнеров:

  • traefik.http.routers.app1.rule=Host(`my.host.de`) && PathPrefix(`/app1`)
  • traefik.http.routers.app1.middlewares=app1
  • traefik.http.middlewares.app1.headers.customresponseheaders.SCRIPT_NAME=/app1

Я сделал то же самое для app2.

В settings.py обоих приложений я установил: FORCE_SCRIPT_NAME = env('FORCE_SCRIPT_NAME', default=None), который затем должен быть разрешен через файл ENV, где у меня есть FORCE_SCRIPT_NAME=/app1.

На стороне Django я всегда получаю 404 с сообщением, что этот путь не существует, и я должен выбрать один из существующих.

Django распознает URL как http://my.host.de/app1 и сообщает мне The current path, app1, didn't match any of these.

РЕДАКТИРОВАТЬ: Поскольку моя установка предназначена как для среды разработки, так и для среды разработки, я использую встроенный сервер Django, а также Gunicorn для запуска приложений Django.

Источник

Ответы (1)

avatar
Caique Tora
6 июля 2021 в 21:49
0

Если вы хотите передать заголовок SCRIPT_NAME в django, вы должны использовать customrequestheaders вместо customresponseheaders при создании промежуточного ПО