无法在生产环境中提供媒体文件

问题描述 投票:0回答:1

我正在尝试在渲染器上部署我的 django 应用程序,但是当我设置 DEBUG=FALSE 时遇到了问题。 我的媒体文件是使用管理界面通过模特的图像字段上传的,无法显示。

我认为问题存在于我的 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;
    }
}

}

活动{}

django设置:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

就这样。 我认为 nginx 应该能够处理和服务所有媒体文件,但事实恰恰相反。 我使用白噪声来处理静态文件,所以我的问题基本上是关于媒体文件。我已经尝试了几个小时,但未能找出问题所在。 如果有人知道问题出现的原因以及如何解决它,我将非常感激。非常感谢。

django windows nginx render media
1个回答
0
投票
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.
© www.soinside.com 2019 - 2024. All rights reserved.