Джанго + Гуникорн + SCRIPT_NAME - PullRequest
0 голосов
/ 24 января 2019

У меня есть несколько приложений 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>

Шаги:

  1. Запускаю веб-сервер: gunicorn config.wsgi --env SCRIPT_NAME=demo -b 0.0.0.0:80 --keep-alive 20 --log-file=- --log-level debug --capture-output (работает в контейнере докера)

  2. Я могу перейти к http://127.0.0.0:8000/demo.Он загружает домашнюю страницу приложения, как и ожидалось.

  3. Ссылка Page1 отображается как http://127.0.0.0:8000/demo/page1, я нажимаю, и она, как и ожидалось, переходит на Page1

  4. Ссылка Home отображается как http://127.0.0.0:8000/demo/demo/.Он продублировал SCRIPT_NAME и ссылка не работает.

Есть идеи, что я делаю неправильно?Это должно работать?

1 Ответ

0 голосов
/ 23 июня 2019

Вам необходимо заменить «SCRIPT_NAME = demo» на «SCRIPT_NAME = / demo» (обратите внимание на дополнительную косую черту) в командной строке запуска вашего сервера.

...