首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django媒体的多个存储引擎:更喜欢本地存储引擎,而不是CDN存储引擎

django媒体的多个存储引擎:更喜欢本地存储引擎,而不是CDN存储引擎
EN

Stack Overflow用户
提问于 2014-02-27 22:31:07
回答 2查看 708关注 0票数 3

我有一个django/mezzanine/django-累计项目,它使用rackspace cloudfiles CDN作为媒体存储。如果存在本地MEDIA_ROOT的所有静态文件,我想自动提供它们,如果它们不存在,则只返回到CDN。

一种可能的方法是使用标记在模板级别管理回退。不过,我不想仅仅为了这个而重写所有的管理模板(例如)。

是否有一种方法可以修改所有媒体的处理,以便首先使用一个存储引擎,然后在出错时切换到另一个存储引擎?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-28 00:56:28

根据Anup的建议,我发现这个nginx配置很好地处理了404条件:

代码语言:javascript
复制
location /static/ {
    root            /path/to/static_root;
    # ...
    error_page 404 =  @cdn;
}

location @cdn {
    # cdn_cname.example.com is an alias for deadbeef012345.r99.cf5.rackcdn.com
    rewrite ^/(.*)$ http://cdn_cname.example.com/$1 last;
}

这将正确地将对本地服务器上返回404的/静态/ URI的任何请求重定向到CDN。然而,django积云仍然通过CDN呈现到静态文件的链接。为了解决这个问题,我将以下内容添加到settings.py的积木块中:

代码语言:javascript
复制
CUMULUS {
    # ...
    'CONTAINER_URI': 'http://example.com/static',
}

现在,django-累计链接使用本地服务器的静态URI,这将击中上面的nginx配置,并且只在必要时重定向到CDN。万岁!

票数 0
EN

Stack Overflow用户

发布于 2014-02-27 23:57:05

最好的方法是让这个工作,是有一个不同的web服务器服务于您的所有媒体(我使用了nginx)。然后设置一个负载均衡器来检测故障,并在发生故障时将所有请求重定向到CDN。您可能需要弄清楚的一件事是图像路径。(如果需要的话,使用HAProxy重写请求URL )

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22082005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档