Nginx - Django我提供完美的静态文件,但不提供媒体文件

时间:2017-05-27 20:10:06

标签: django nginx media

(抱歉我的英语不好)

我有一个奇怪的问题...我配置Django和Nginx都很完美,我的网站显示完美的所有静态文件都是完美的加载。但是..... Nginx不提供媒体文件,我检查我的配置,一切似乎都没问题。但我总是得到404错误,路由与静态文件相同,但带有媒体字

这是一个静态文件路由 http://project.com/static/css/custom.css

这是一个媒体文件 http://project.com/media/stores/logos/solutions_logo_rdWRcqQ.jpg

这是nginx配置

server {
    listen 80;
    server_name project.com;

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
            root /home/username;
    }

    location /media/ {
            root /home/username;
    }

    location / {
            include proxy_params;
            proxy_pass http://unix:/home/username/project.sock;
    }
}

这是django设置

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static/'),
)
STATIC_ROOT=os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)), 'static/')

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

任何想法???

1 个答案:

答案 0 :(得分:1)

对野外的猜测。您的静态文件由django直接提供,而不是由您的nginx提供。 (您可以通过删除 location / static {...} 部分并重新启动nginx来测试它。)

然后要解决您的问题,请尝试以下方法:

server {
    listen 80;
    server_name project.com;

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
            alias /home/username;
    }

    location /media/ {
            alias /home/username;
    }

    location / {
            include proxy_params;
            proxy_pass http://unix:/home/username/project.sock;
    }
}

另外,不要忘记之后重新启动你的nginx。