Медиафайлы не могут обслуживаться в производственной среде
Я пытаюсь развернуть свое приложение django на рендере, но столкнулся с проблемой, когда установил DEBUG=FALSE. Мои медиафайлы, которые загружаются с помощью интерфейса администратора через imagefield модели, не могут быть показаны.
Я думаю, что проблема существует в моих настройках nginx и настройках django. Однако я пробовал несколько раз, но так и не смог решить проблему. Я установил nginx.conf:
http { include mime.types;
server {
listen 80;
root C:/Users/USER/Desktop/onemoretime;
# location / {
# try_files $uri $uri/ =404;
# }
location /static/ {
alias C:/Users/USER/Desktop/onemoretime/staticfiles/;
}
location /media/ {
alias C:/Users/USER/Desktop/onemoretime/media/;
}
location / {
proxy_pass http://127.0.0.1:8000; # 代理到 Waitress
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
события {}
и настройка джанго: MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR,'media') таким образом. Я думаю, что nginx должен уметь работать с медиафайлами и обслуживать их, но все происходит наоборот. Я буду очень благодарен, если кто-то знает, почему возникла эта проблема и как ее решить. Большое спасибо.
Make sure you have below config in django settings:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'
# Static files (CSS, JavaScript, Images)
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
STATIC_URL = '/static/'
# Nginx Config below
# media file
location /media {
alias /var/www/project/media; <production project path>
}
# Django static file
location /static {
alias /var/www/project/static; <production project path>
}
Important: Make sure you have ran **python manage.py collectstatic** command on production server to serve the file from Nginx.