Django nginx staticfiles 404
Я пытаюсь разобраться с nginx, обслуживающим статические файлы Django в докерах за https-прокси.
Я пытался в основном следовать этому руководству: https://testdriven.io/blog/django-lets-encrypt/
Все это работало на моей локальной машине, поэтому я перешел на удаленный сервер, работающий на реальном домене за https reverse-proxy.
У меня есть такой docker-compose.yml:
backend:
...
volumes:
- ./backend/:/code/
- static_volume:/code/staticfiles
- media_volume:/code/mediafiles
...
nginx-proxy:
...
volumes:
- static_volume:/code/staticfiles
- media_volume:/code/mediafiles
...
depends_on:
- backend
У меня есть файл default
в каталоге vhost.d со следующими директивами:
location /static/ {
alias /code/staticfiles/;
add_header Access-Control-Allow-Origin *;
}
location /media/ {
alias /code/mediafiles/;
add_header Access-Control-Allow-Origin *;
}
мои докерные файлы nginx выглядят следующим образом:
FROM jwilder/nginx-proxy:0.9
COPY vhost.d/default /etc/nginx/vhost.d/default
COPY custom.conf /etc/nginx/conf.d/custom.conf
my Django settings.py:
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
Я собираю файлы при загрузке бэкенда, и если я обращаюсь к сервисам backend
или nginx-proxy
, я могу найти свои файлы в правильном месте:
/code/staticfiles/... # all the files are here in the right place...
Поэтому я "предполагаю", что объемы правильные.
/vhosts.d/default
также присутствует и находится в правильном месте, когда я вхожу в службу nginx.
Обратный прокси-сервер HTTPS работает отлично. Мой бэкенд является API и вызовы к нему работают отлично. У меня просто нет статических файлов для области администратора.
Однако статические файлы возвращают ошибку 404
.
Не возникает никаких ошибок, кроме 404 при загрузке статических активов. Что я делаю неправильно?
Мне пришлось уничтожить все образы и тома, связанные с nginx, и создать их заново.
тогда все получилось. Простого восстановления было недостаточно