Назад | Перейти на главную страницу

img 404 с использованием Nginx, Docker, Django, Digital Ocean

По какой-то причине мои статические ресурсы CSS, JS и Font-Awesome распознаются и обслуживаются правильно, но в моих статических файлах img в журналах контейнеров Nginx Docker отображается ошибка 404.

Когда я создаю эти контейнеры локально, все работает нормально, но как только я создаю Digital Ocean, файлы img начинают выдавать ошибку 404 с Nginx.

Я использовал инструменты в течение нескольких дней безуспешно, любая помощь была бы БОЛЬШОЙ оценена.

Вот мои настройки Nginx:

server {

    listen 80;
    server_name 104.236.29.80;

    access_log /dev/stdout;
    error_log /dev/stdout info;

    location /static/ {
        alias /usr/src/app/personal/static/;
    }

    location / {
        proxy_pass http://web:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}


Вот Dockerfile для моей сборки Nginx:

FROM tutum/nginx
RUN rm /etc/nginx/sites-enabled/default
ADD sites-enabled/ /etc/nginx/sites-enabled


Мой файл Docker-compose выглядит примерно так:

web:
    restart: always
    build: ./web
    expose:
      - 8000
    links:
      - postgres:postgres
    volumes:
      - ./web:/usr/src/app
    env_file:
      - .env
    command: /usr/local/bin/gunicorn etandme.wsgi:application -w 2 -b :8000

 nginx:
    restart: always
    build: ./nginx
    ports:
      - 80:80
    volumes_from:
      - web
    links:
      - web:web


Журналы ошибок выглядят примерно так:

"GET /static/js/creative.js HTTP/1.1" 200 1860 "http://104.236.29.80/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko)
[error] 7#0: *7 open() "/usr/src/app/personal/static/img/Monkeypod.jpg" failed (2: No such file or directory), client: 98.151.113.208, server: 159.203.166.130, request: "GET /static/img/Monkeypod.jpg HTTP/1.1", host: "104.236.29.80", referrer: "http://104.236.29.80/"


Я могу подтвердить, что я запустил "collectstatic" в веб-контейнере из командной строки, а терминал подтверждает, что файлы img были скопированы в статический корень (/ usr / src / app / personal / static /).

Я совершенно не понимаю, почему будет обслуживаться только часть статических файлов, тем более что все они расположены в одном каталоге и на них ссылаются в бэкэнде Django с одинаковым синтаксисом.

Спасибо за ваше время и внимание!

Нашел проблему!

По какой-то причине, когда я запускаю collectstatic на производственном сервере (дроплет Digital Ocean Docker), файлы .jpg копируются в статический корневой каталог с расширением .JPG.

После внесения некоторых изменений в мои шаблоны Django и замены .jpg на .JPG в тегах шаблонов теперь все работает правильно.