У меня есть приложение django и nginx

У меня есть django приложение и nginx, из браузера оно обращается к файлу /static.

например

http://example.com/static/file.png

Однако мое приложение имеет файлы в каталоге /staticroot.

http://example.com/staticroot/file.png

показывает изображение.

Итак, я установил на nginx.

location /static {
    alias /staticroot;
}

Как бы это не выглядело

Моя среда - режим Debug.

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

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

STATIC_ROOT = os.path.join(config("PROJ_PATH"), 'staticroot')

Как я могу это исправить?

Для того, чтобы обслуживать содержимое staticroot вы должны переименовать ваши STATIC_URL='/staticroot/' & в файле nginx

location /staticroot/ {
    alias /home/your_username/project_name;
}

Когда запрос приходит на /staticroot/somefile Nginx будет искать каталог с именем staticroot в файловой системе и будет обслуживать предоставленный файл.
Поэтому, когда вы определяете url для статического или медиа контента, убедитесь, что у вас есть каталог с таким же именем.
Для получения дополнительной информации посмотрите Serving Static Content на Nginx docs.

в /etc/nginx/sites-available/you_project набор

location /static/ {
    root /home/your_admin_name/your_project_folder_name;
}

в settings.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
Вернуться на верх