在生产中使用Django将媒体文件推送到单独的nginx VM

时间:2016-08-28 09:50:33

标签: django nginx

我不知道我是否遗漏了有关此事的信息。但我想知道如何将静态文件存储到不同的VM。我已经读到有人建议大型网站分开负载。

我目前的设置是我使用一个带有nginx,virtualenv,gunicorn等的计算机引擎。我使用nginx在同一台服务器上显示静态文件(包括媒体文件)。

当用户上传图片时,如何将媒体文件推送到单独的nginx服务器?我怎样才能获得相同的网址?

1 个答案:

答案 0 :(得分:0)

让我们首先探讨static资源的选项(Javascript,CSS,图像,字体等...)

  • 您可以完全控制此静态内容在部署期间的位置。通常,这些资源将在构建过程中进行压缩,以优化内容大小以减少带宽。
  • 在不同服务器(具有ngnix的VM)上部署静态资源,并使用settings.py在Django STATIC_URL中配置该URL。如果您使用无cookie域,它将节省更多带宽。请参阅此网址中的Use Cookie-free Domains for Components部分:https://developer.yahoo.com/performance/rules.html
  • 您可以使用这些资源的内容过期设置在指定的持续时间内在客户端上缓存。
  • 官方文档中提到了一些最佳做法:https://docs.djangoproject.com/en/1.10/howto/static-files/

对于media资源,您可以将文件保存在共享卷上,并在与static资源相同的不同服务器上运行。您可以使用settings.py在Django MEDIA_URL中配置该服务器URL。