python - django 的另一台主机上的媒体服务器。这是正确的方法吗?

标签 python django nginx shared-hosting

我阅读了很多“如何为 Django 建立独立的媒体服务器”。但我有自己的决定。

/media - 文件服务器上的目录。我将它安装到我的 django 服务器 (SSHFS),这样我就可以在那里保存用户图像等。然后我将 media_url 更改为 file server address/media,在我的文件服务器上有 nginx,它将分发文件。

这样能行吗?

django服务器的负载会不会很大?

谢谢。

最佳答案

如果我正确理解了您的服务器布局——nginx 在您的文件服务器上运行并且它正在将请求代理到另一台服务器上的 Django,它应该可以工作。最好服务器位于同一个 LAN 或数据中心,以减少延迟和网络错误。您还想确保运行 nginx 工作进程的用户有权访问/media/。

让 nginx 为媒体和静态目录提供服务会减少 Django 服务器的负载。顺便说一下,Gunicorn 和 uWSGI 是备受推崇的 Django 服务器。

使用/media/目录有点不寻常,因为它是 usually reserved for CDROMs or USB flash drives .通常使用/var/www/example.com/media/srv/www/example.com/media

设置

我只是想确保您的域设置正确,因为它会影响 MEDIA_URL 设置的使用方式,尤其是如果您从那里提供 Javascript,请耐心等待。如果您的网站是 example.com,您的 DNS 设置应将 example.com 指向您的 nginx/文件服务器 IP 地址。

您的设置文件

Django settings.py

MEDIA_URL = "/media/"

nginx example.conf

root/; 在下面的例子中看起来很吓人,但是 have a look at the docs to verify this .

server {
    server_name example.com;

    location /media/ {
        root /;
    }

    # OTHER LOCATION RULES

    location / {
        # PROXY RULES HERE
    }
}

访问媒体文件

您的 Django 项目可以使用简单的绝对 URL 来引用您的图像

<img src="/media/user1234/2012/03/04/aeiou.jpg" alt="aeiou">

use django.core.context_processors.media, RequestContext and {{ MEDIA_URL }}以防万一您将媒体文件移动到 CDN。

<img src="{{ MEDIA_URL }}/user1234/2012/03/04/aeiou.jpg" alt="aeiou">

关于python - django 的另一台主机上的媒体服务器。这是正确的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19684824/

相关文章:

python - DJANGO与docker和PostgreSQL

nginx 错误 - 此处不允许使用 "proxy_cache_path"指令

php - 在一台专用服务器 ubuntu 上运行多个 nginx

python - 来自现有字典值的新字典

python - 如何使用 PDFPlumber 从两列 PDF 中提取文本

python - 使用 Python 将输出总和四舍五入到最接近的偶数

Python数组尺寸大,时间成本高

django - Fandjango Facebook 用户只返回几个 Facebook 字段

django - 为什么在安装了官方Django Docker镜像后为什么不能 `docker exec`?

php - Nginx 和 WordPress 漂亮永久链接的 500 错误