Отсутствие статических файлов в Nginx + Django

Я знаю, что таких вопросов много. Но я перепробовал много всего, что нашел, и ничего не помогает.

У меня комбинация Django + uWSGI + Nginx + PostgreSQL.

Статический файл был собран python manage.py collectstatic в директории movies_admin/static.

Я захожу в админку Django по локальному адресу через nginx 127.0.0.1/admin. Сама страница загружается, но только текст, поля и тому подобное. Никакой графики - вот в чем моя проблема. Мой файл docker-compose:

version: '3'

services:
  django:
    restart: always
    build: movies_admin/.
    env_file:
      - .env
    ports:
      - "8000:8000"
    container_name: work_django
    depends_on:
      - postgres

  postgres:
    restart: always
    env_file:
      - .env
    image: 'postgres:${PG_VER}'
    environment:
      - POSTGRES_DB=${DB_NAME}
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASSWORD}
    container_name: work_database
    ports:
      - "5432:5432"
    volumes:
      - ${DB_VOLUME_CATALOG_PATH}:/var/lib/postgresql/data/

  nginx:
    image: 'nginx:${NGINX_VER}'
    volumes:
      - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro
      - ${NGINX_CONFD_CATALOG}:/etc/nginx/conf.d:ro
      - ${STATIC_PATH}:/var/www/static/:ro
    container_name: work_nginx
    depends_on:
      - django
    ports:
      - "80:80"

Я проверил. Статический каталог смонтирован в каталоге '/var/www/static/' контейнера nginx.

Мой site.conf:

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  _;

    location /static/ {
        alias /var/www/static/;
    }

    location @backend {
        proxy_pass http://django:8000;
    }

    location ~* \.(?:jpg|jpeg|gif|png|ico|css|js)$ {
        log_not_found off;
        expires 90d;
    }

    location / {
        try_files $uri @backend;
    }

    error_page  404              /404.html;

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

Часть моего файла settings.py:

STATIC_ROOT = '/var/www/static'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static/'),
    '/opt/app/static/',
]
STATIC_URL = '/static/'

WhiteNoise был не нужен. Оказалось, что проблема кроется в файле site.conf. Сам файл в порядке.

В этом состоянии все работало.

Удалены css и js из:

    location ~* \.(?:jpg|jpeg|gif|png|ico|css|js)$ {
        log_not_found off;
        expires 90d;
    }
server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  _;

    location @backend {
        proxy_pass http://django:8000;
    }

    location / {
        try_files $uri @backend;
    }

    location /static/ {
        alias /var/www/static/;
    }
    location ~* \.(?:jpg|jpeg|gif|png|ico)$ {
        log_not_found off;
        expires 90d;
    }

    error_page  404              /404.html;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
Вернуться на верх