Невозможно найти статический файл администратора Django (404 не найден)

Мой проект Django развернут на экземпляре EC2. Все в порядке, кроме статических файлов. Вот дерево путей к директории моего проекта

my_project
    └─admin
        ├── admin
        │   ├── admin
        │   ├── keywords
        │   ├── manage.py
        │   └── static
        ├── README.md

А это мой settings.py код настройки статических файлов


# settings.py

debug=False

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
ROOT_DIR = os.path.dirname(BASE_DIR)

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR,'my_project/static')

STATICFILES_DIRS = [
    STATIC_ROOT
]

А это мои nginx.conf файлы

root /usr/share/nginx/html;

location = /favicon.ico { access_log off; log_not_found off; }

location /static {
    alias /static/;
}

location / {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://unix:/home/devel/run/gunicorn.sock;
}

error_page 404 /404.html;
    location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}

А также окружения моей машины:

Centos 7.9 python 3.6.8 Django 4.0.6

Я уже выполнил python manage.py collectstatic команду.

Когда я захожу на страницу администратора этого проекта, все пользовательские интерфейсы загружаются без CSS и JS, хотя.

Может быть, я что-то неправильно настроил? Интересно, почему django не может найти ни одного статического файла.

Предполагая, что ваш BASE_DIR такой же, как /usr/share/nginx/html, и BASE_DIR/myproject/static существует и имеет содержимое, попробуйте

location /static/ {
    root /myproject/;
}

(Используя root, а не alias, поскольку конечные каталоги одинаковы, согласно nginx docs)

Я предполагаю, что ваше предыдущее определение корня префиксирует местоположение - если нет, вам, возможно, придется использовать root /usr/share/nginx/html/myproject/ явно вместо этого

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