Хостинг Django из каталога

Моя структура каталогов выглядит следующим образом:

C:\htdocs                                     # web root
   |_ django-container
      +- django-project
      |  +- core                              # startproject
      |  |_ myapp1                            # startapp
      +- public
         +- static                            # STATIC_ROOT, collectstatic
         |  +- css
         |  +- images
         |  |_ js
         |_ media                             # MEDIA_ROOT

Nginx config:

http {
  # ...
  upstream wsgi-server {
    server 127.0.0.1:8080;
  }
  server {
    # ...
    location /mysite/ {
      proxy_pass http://wsgi-server/;
    }
    location /mysite/public/media/ {
      alias C:/htdocs/django-container/public/media/;
      autoindex off;
    }
    location /mysite/public/static/ {
      alias C:/htdocs/django-container/public/static/;
      autoindex off;
    }
  }
}

Я запускаю waitress WSGI-сервер в качестве службы на порту 8000, который работает core.wsgi.application. Мои settings.MEDIA_URL и settings.STATIC_URL являются public/media/ и public/static/ соответственно.

Когда я делаю редиректы в приложении или создаю урлы в шаблонах, в них нет сегмента mysite, из-за чего все ссылки не работают. Даже ссылки public/static/ и public/media/. Для последних двух я могу добавить сегмент в settings.STATIC_URL и settings.MEDIA_URL, но мне нужен общий способ добавления сегмента mysite во всех местах, желательно автоматически, если это возможно.

Согласно документации по Django, нужно было просто установить FORCE_SCRIPT_NAME = '/mysite' в core.settings. Это сработало для всех редиректов, URL, статических и медиа файлов одним выстрелом, никаких других изменений в Django не потребовалось.

Но теперь у меня возникла другая проблема из-за добавления этого. python manage.py runserver теперь не работает Page Not Found - Request URL: http://localhost:8000/mysite/mysite/account/, когда в адресе браузера есть только http://localhost:8000/mysite/account/.

В качестве быстрого решения я поместил FORCE_SCRIPT_NAME в yaml-файл, который читается в settings.py. Я управляю этим yaml, когда хочу запустить его с помощью runserver или под управлением отдельного WSGI-сервера. Если у кого-то есть лучшее решение, которое работает для обоих вариантов, пожалуйста, добавьте свой ответ.

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