【问题标题】:Django doesn't serve images because Debug is set to True - how can I make nginx serve those?Django 不提供图像,因为 Debug 设置为 True - 我怎样才能让 nginx 提供这些图像?
【发布时间】:2020-01-10 13:01:25
【问题描述】:

所以我只是在部署我的第二个网站。 我有一个包含 css、js 文件的静态位置,一切正常。

现在我才意识到我也有一些用户上传的图片。 这是模型:

photo_1 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    photo_2 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    photo_3 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    photo_4 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    photo_5 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    photo_6 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    photo_7 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    photo_8 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    photo_9 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)

问题是当我尝试访问那些 DEBUG 设置为 True 的图像时,我得到了这个

Not Found
The requested resource was not found on this server.

我在互联网上发现将 Debug 设置为 True 会使 django 不再提供文件。所以我必须配置 nginx 来为这些服务。

我该怎么做?

我必须让它也服务于默认的 /static/ 文件夹,以及这些没有固定名称的照片。 (%Y/%m/%d)。

绝对路径类似于 /etc/USERNAME/main-website/media/photo/%Y/%m/%d。

这是我启用站点的 nginx 文件。

server {
    server_name bestdavnic73.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/octavian56/main-website;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/octavian56/main-website/bestDAVNIC73.sock;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/bestdavnic73.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/bestdavnic73.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    server_name www.bestdavnic73.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/octavian56/main-website;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/octavian56/main-website/bestDAVNIC73.sock;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/bestdavnic73.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/bestdavnic73.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = bestdavnic73.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    server_name bestdavnic73.com;
    return 404; # managed by Certbot


}

server {
    if ($host = www.bestdavnic73.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    server_name www.bestdavnic73.com;
    return 404; # managed by Certbot


}

你能帮我解决这个问题并帮助我了解我应该如何解决这个问题吗?

谢谢。

【问题讨论】:

标签: django nginx


【解决方案1】:

对于和我一样情况的每个人——基本上,想知道如何通过 nginx 提供媒体和静态文件——你可以在这里找到答案:

How to serve django media files via nginx ?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 2018-10-22
    • 2020-08-10
    • 2014-10-27
    • 1970-01-01
    相关资源
    最近更新 更多