Nginx不提供我的Django应用媒体文件

时间:2018-07-15 06:20:05

标签: django nginx

我是django的新手,最近我将django应用程序发送到了生产环境。在我的网站上,我只能看到静态文件,但是媒体是不同的故事。我已经尝试了三天来解决这个问题,但是没有运气。以下是我的设置和nginx设置:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
MEDIA_URL = "/media/"
MEDIA_ROOT = BASE_DIR


server {
    listen 80;
    server_name myIP;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/make/leosblog;
    }
    location / {
        include proxy_params;
    proxy_pass http://unix:/home/sammy/myproject/myproject.sock;
    }
}

我在检查html时注意到,媒体文件的路径以'/ media / media / ...'开头,但是,我所有的媒体文件都只在一个媒体文件夹中。不知道这是否是导致此问题的原因。

我该怎么做才能解决此问题?非常感谢。

1 个答案:

答案 0 :(得分:0)

在nginx配置中添加媒体文件夹的位置

server {
    listen 80;
    server_name myIP;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/make/leosblog;
    }
    location /media/ {
        root /media_path;
    }
    location / {
        include proxy_params;
    proxy_pass http://unix:/home/sammy/myproject/myproject.sock;
    }
}

然后将以下代码添加到urls.py文件中:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_ROOT, document_root=settings.STATIC_ROOT)