我正在尝试在渲染器上部署我的 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 应该能够处理和服务所有媒体文件,但事实恰恰相反。 我使用白噪声来处理静态文件,所以我的问题基本上是关于媒体文件。我已经尝试了几个小时,但未能找出问题所在。 如果有人知道问题出现的原因以及如何解决它,我将非常感激。非常感谢。
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.