Я пытаюсь загрузить и сохранить медиафайлы (изображения, PDF-файлы) в приложении с Django. В режиме разработки он работает нормально, но я получаю «404 Not Found Запрошенный URL /mediafiles/images/test.jpg не найден на этом сервере». при развертывании на сервере.
«Забавно» отметить: мне удается загрузить файлы, я вижу их на своем хосте и в обоих контейнерах (nginx и веб-сервер), но всякий раз, когда я пытаюсь получить к ним доступ, я получаюошибка Not Found.
Я прочитал и безуспешно пробовал многие вещи, такие как изменение файла conf nginx, игра с файлом docker-compose ... у вас есть идея, куда мне теперь смотреть? ?
Вот, что я думаю, уместная информация:
Сервер: Ubuntu 16.04
Docker-Compose
services:
nginx:
image: nginx
depends_on:
- webserver
volumes:
- ./config/nginx/conf.d:/etc/nginx/conf.d
- ./static:/usr/share/nginx/html:ro
- ./mediafiles:/usr/share/nginx/mediafiles:ro
labels:
- "traefik.backend=${TRAEFIK_HOST}_static"
- "traefik.frontend.rule=Host:${TRAEFIK_HOST}; PathPrefixStrip: /static/"
- "traefik.enable=true"
- "traefik.port=80"
webserver:
image: ${MY_IMAGE}
volumes:
- ./static:/tmp/html/static
- ./mediafiles:/code/server/mediafiles
labels:
- "traefik.backend=${TRAEFIK_HOST}"
- "traefik.frontend.rule=Host:${TRAEFIK_HOST}"
- "traefik.enable=true"
- "traefik.port=8000"
volumes:
mediafiles:
Nginx Config
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /mediafiles {
autoindex on;
alias /usr/share/nginx/mediafiles/;
}
}
Django Settings.py
MEDIA_ROOT = '/code/server/mediafiles/'
MEDIA_URL = '/mediafiles/'
STATIC_URL = '/static/'
STATIC_ROOT = '/tmp/html/static/'
Django urls.py
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT,)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Скажите, нужна ли другая информация. И заранее спасибо!