我使用 Nginx 作为前端 Web 服务器,将 Python 请求重定向到 Apache + mod_wsgi。一切运行正常。我正在运行一个 Django 项目,我想为我的几个项目应用程序设置子域。
建议结构:
/www/项目/ -
-->/admin/-admin.domain.com
-->/www/ - www.domain.com
-->/common_data/ - 没有子域名
--> 等等
这个设置在哪里完成?Apache 还是在 Django 中完成?Apache 重写规则是执行此操作的最佳方法吗?我更喜欢在浏览器窗口中维护 URL。即http://domain.com/admin/filebrowser/browse/->http://admin.domain.com/filebrowser/browse/。
任何建议都值得感激。谢谢
PS:我看到了以下链接:http://www.djangosnippets.org/snippets/1119/,http://sharjeel.2scomplement.com/2008/07/24/django-subdomains/,http://www.rossp.org/blog/2007/apr/28/using-subdomains-django/但他们似乎并没有做同样的事情。
答案1
在 Apache 中设置多个<VirtualHost>
,并将每个指向不同的DocumentRoot
。
答案2
我目前正在我的 VPS 上执行此操作。这个过程大致分为三个步骤:
- 我的子域名的 CNAME,这可以通过您用来管理 DNS 的任何方式完成。
- Ngnix 虚拟主机
- Apache2 的虚拟主机
这篇文章对我很有帮助: Django 和 Ubuntu Intrepid 年鉴。
您的 DNS 条目应如下所示:
sub.domain.com. 3600 IN CNAME domain.com.
在里面/etc/nginx/站点可用目录:
- 域名.com
- 子域名.com
在里面/etc/apache2/站点可用目录:
- 域名.com
- 子域名.com
不要忘记为每个相应的已启用站点目录。
答案3
我已经找到了解决方案,而且效果很好。不过,由于一些可重复使用的应用程序(例如 django-debug-toobar)模板中的媒体文件路径存在问题,因此存在一些问题。当然,您可以手动修改它们以使其正常工作。