У меня есть несколько приложений django, работающих в одном домене, но у меня возникают проблемы с правильной работой SCRIPT_NAME с Gunicorn.
Примеры путей к приложениям:
- www.domain.com / app1
- www.domain.com / demo
Сценарий 1: В настоящее время каждое приложение работает на Elastic Beanstalk и изменяет конфигурацию apache для работы сSCRIPT_NAME сторона вещей.Это работает.
Сценарий 2: Я тестировал с использованием AWS ECS / FARGATE, и в этой конфигурации у меня есть только контейнер с Django / Gunicorn.Там нет Apache / Nginx и т. Д. Я намерен просто использовать Django / Gunicorn / Whitenoise / Cloudfront. Это не работает. Значение SCRIPT_NAME для работы django с подпутями дублируется.
Чтобы упростить / устранить неполадки, я запускаю приведенный ниже код / команды локально, поэтому AWS не задействован.Я также создал голое / простое приложение django для тестирования.
Моя структура страницы приложения выглядит следующим образом:
- Home
- Page1 Link
<a href="{% url 'demo:page1' %}">Page1</a>
- Home Link
<a href="{% url 'demo:home' %}">Home</a>
- Page2 Link
<a href="{% url 'demo:page2' %}">Page2</a>
- Home Link
<a href="{% url 'demo:home' %}">Home</a>
Шаги:
Запускаю веб-сервер: gunicorn config.wsgi --env SCRIPT_NAME=demo -b 0.0.0.0:80 --keep-alive 20 --log-file=- --log-level debug --capture-output
(работает в контейнере докера)
Я могу перейти к http://127.0.0.0:8000/demo
.Он загружает домашнюю страницу приложения, как и ожидалось.
Ссылка Page1 отображается как http://127.0.0.0:8000/demo/page1
, я нажимаю, и она, как и ожидалось, переходит на Page1
Ссылка Home отображается как http://127.0.0.0:8000/demo/demo/
.Он продублировал SCRIPT_NAME и ссылка не работает.
Есть идеи, что я делаю неправильно?Это должно работать?