【问题标题】:Nginx - Django i serve perfect static files but not media filesNginx - Django 我提供完美的静态文件,但不提供媒体文件
【发布时间】:2017-10-28 12:07:52
【问题描述】:

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

我遇到了一个特殊的问题...我将 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 media


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 2012-06-15
      • 2020-05-21
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 2021-12-02
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多