По какой-то причине мои статические ресурсы 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 в тегах шаблонов теперь все работает правильно.