其他分享
首页 > 其他分享> > 跨子域拆分Django项目

跨子域拆分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