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

Nginx-Django i提供完美的静态文件,但不提供媒体文件,django,nginx,media,Django,Nginx,Media,对不起,我英语不好 我有一个特别的问题。。。我将Django和Nginx配置为完美,我的站点显示完美所有静态文件都加载到完美。但是Nginx没有提供媒体文件,我检查了配置,一切似乎都正常。但我总是会遇到404错误,路由与静态文件相同,但使用媒体字 这是一个静态文件路由 这是一个媒体文件 这是nginx配置 server { listen 80; server_name project.com; location = /favicon.ico { access_log

对不起,我英语不好

我有一个特别的问题。。。我将Django和Nginx配置为完美,我的站点显示完美所有静态文件都加载到完美。但是Nginx没有提供媒体文件,我检查了配置,一切似乎都正常。但我总是会遇到404错误,路由与静态文件相同,但使用媒体字

这是一个静态文件路由

这是一个媒体文件

这是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/')

有什么想法吗?

一个野外的猜测。您的静态文件直接由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