CSS Администратора Django Не Загружается в рабочей среде, Даже Если Статические Файлы Обрабатываются (200 ОК)

Я столкнулся с проблемой, из-за которой моя панель администратора Django на моем рабочем сервере отображается без изменений, хотя все статические файлы обрабатываются корректно. adminHTML содержит соответствующие теги <link>, и я могу подтвердить, что файлы CSS доступны по прямому URL.

Детали окружающей среды:

  • Производство: виртуальная машина Azure
  • Django: последняя версия
  • Сервер приложений: Gunicorn
  • Веб-сервер: nginx на Ubuntu
  • Промежуточное программное обеспечение: Удален белый шум (во избежание конфликтов)
  • Статические файлы: собраны с помощью python manage.py collectstatic --noinput

Примечание: Я использую одну и ту же виртуальную машину azure для своего серверной части django и интерфейса react

Что я сделал/проверил:

1. Настройки Django:

  • Установите STATIC_URL и сконфигурируйте STATIC_ROOT
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

2. Конфигурация Nginx:

server {
    listen 80 default_server;
    server_name _;

    client_max_body_size 200M;

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

    location /static/ {
      alias /home/ubuntu/example/staticfiles/;
      autoindex on;
    }

    # Serve media files
    location /media/ {
        root /home/ubuntu/example;
        autoindex on;
    }

    # Proxy API requests to Django backend
    location /api/ {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }

    # Proxy Django admin requests to the Django backend
    location /admin/ {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }

    # Serve the React frontend from its build output
    location / {
       root /home/ubuntu/frontend/dist;  # Adjust path if needed
       try_files $uri /index.html;
    }
}

3. Проверка статических файлов Выполняется

curl -I https://skumapper.x-demand.com/static/admin/css/base.css

возвращает 200 OK с соответствующим content-type (text/css).

HTML-код страницы входа в систему администратора Django включает в себя:

<link rel="stylesheet" href="/static/admin/css/base.css">

На вкладке сеть браузера показано, что все необходимые CSS и JS файлы возвращают статус 200

4. Дополнительные проверки:

  • Я очистил кэш браузера и даже протестировал его в режиме инкогнито.
  • Я проверил права доступа к файлам на /home/ubuntu/example/staticfiles/ (принадлежит www-data, с правами доступа, установленными на 755).
  • Я подтвердил, что collectstatic поместил все необходимые файлы в каталог staticfiles.

Проблема: Несмотря на то, что все статические файлы доступны, а ссылки на странице администратора в HTML выглядят корректно, панель администратора Django остается без изменений. В консоли браузера нет сообщений об ошибках 404 или предупреждений о смешанном содержании.

Вопросы:

  • Что может привести к тому, что CSS администратора Django (и, возможно, другие статические ресурсы) не будут применяться, даже если они обслуживаются должным образом?
  • Существуют ли какие-либо потенциальные проблемы с кэшированием или путями (например, с кэшированием памяти), которые могут привести к тому, что интерфейс администратора останется без изменений?
  • Какие дополнительные шаги по отладке я могу предпринять, чтобы устранить проблему?

Мы были бы очень признательны за любую помощь или разъяснения!

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