我目前正在开发一个网站,其中功能需要拆分为单独的子域dashboard.example.com
,admin.example.com
和facebook.example.com
。我希望通过一个Django项目提供一切,因为一切都将使用相同的核心模型。我使用Nginx作为前端代理服务器处理静态文件并将所有其他请求传递给Apache。
我想到的解决方案是通过nginx将每个子域映射到相应的应用程序:
server {
listen 80;
server_name dashboard.example.com;
...
location / {
proxy_pass http://127.0.0.1/dashboard/;
...
}
}
server {
listen 80;
server_name admin.example.com;
...
location / {
proxy_pass http://127.0.0.1/admin/;
...
}
}
...为每个子域执行此操作,有效地将子域映射到其各自的应用程序URL名称空间。我遇到的问题是Django没有意识到映射,所以当它反转一个URL时,它会在它之前添加/dashboard/
等,创建像dashboard.example.com/dashboard/dashboard/
这样的URL。我想我可以编写一个自定义的reverse
函数去除不必要的子目录,但这似乎是一个创可贴。
有没有更好的方法来完成我的需要,或者我应该重组项目?
感谢您的帮助。
答案 0 :(得分:1)
Django的网站框架(https://docs.djangoproject.com/en/1.7/ref/contrib/sites/)应该足够了,如果没有,请看看django-subdomains(http://django-subdomains.readthedocs.org/en/latest/)似乎有办法解决你的反向网址(基于Google快速搜索,我自己从未使用过它!)