跨子域拆分Django项目
作者:互联网
我目前正在开发一个网站,在该网站中,功能需要分为单独的子域,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.我想我可以编写一个自定义的反向函数来删除不必要的子目录,但这似乎是一个创可贴.
是否有更好的方法来完成我需要的工作,还是应该重组项目?
谢谢你的帮助.
解决方法:
Django的Sites框架(https://docs.djangoproject.com/en/1.7/ref/contrib/sites/)应该足以解决此问题,如果不是,请查看django-subdomains(http://django-subdomains.readthedocs.org/en/latest/),因为它似乎可以解析您的反向URL(基于快速的Google搜索,我从未使用过)我!)
标签:nginx,django,apache,reverse-proxy 来源: https://codeday.me/bug/20191014/1911769.html