繁体   English   中英

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

[英]Nginx - Django i serve perfect static files but not media files

(对不起,我的英语不好)

我遇到了一个特殊的问题...我完美地配置了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/')

任何想法???

疯狂的猜测。 静态文件直接由django提供,而不由nginx提供。 (您可以通过删除/ 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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM