使用Django + Nginx + Gunicorn进行子域名托管

时间:2013-06-15 13:06:02

标签: django nginx django-deployment

我正在使用django为服务器端开发一个Web应用程序。它有android,ios和前端的客户端。我在考虑使用子域来区分这些客户端的URL。差异化的原因在于对不同客户的网址响应不同。 我希望能够使用 android.example.com ios.example.com 子域。我的子域名是固定的。

您能否帮助我采取何种方法来实现这一目标。我读过的一些选项是

  • 使用相同的数据库托管两个不同的项目。(看起来对我很好,但可能不是最佳的)
  • 使用网站框架在同一个实例上托管。(不确定这个选项有多好)
  • 使用虚拟主机托管(真的无法理解如何实现这一点)。
  • 使用子域中间件,如许多答案和一些Django Snippets中所述。

请帮助我选择最佳选项,如果可能的话,请链接到一些教程,了解如何实现它。谢谢。

1 个答案:

答案 0 :(得分:1)

“使用站点框架”在某种程度上与使用相同数据库托管两个项目相同。如果您要使用站点框架,则每个子域都有单独的实例,它们共享相同的代码库和数据库,但首先必须在一个设置中有所不同,即SITE_ID

如果您能够运行多个实例,这肯定有一些优势:

  • 您不需要通过中间件进行额外处理
  • 您可以轻松地为每个站点选择不同的设置,例如。不同的模板路径,使用不同的中间件等,甚至可以根据需要自定义每个项目的URL
  • 您已经在进行某种负载均衡,因为您将请求指向单独的实例,如果一个站点崩溃它也不会影响其他站点

如果你只能运行一个实例,我猜你唯一的选择是使用类似中间件的东西,例如。 django-mobile然后可能会有所关注,因为它为您提供了一些用于确定客户类型的好工具集......

但除此之外,在搜索引擎优化方面,拥有相同内容的单独域名可能并不总是最佳做法。