Медиафайлы не могут обслуживаться в производственной среде

Я пытаюсь развернуть свое приложение 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.
Вернуться на верх