2014-12-22 4 views
1

В настоящее время я разрабатываю сайт, где функциональность необходимо разбить на отдельные поддомены, dashboard.example.com, admin.example.com и facebook.example.com. Я бы хотел, чтобы все было подано через один проект Django, потому что все будет использовать одни и те же основные модели. Я использую Nginx в качестве переднего прокси-сервера, который обрабатывает статические файлы и передает все другие запросы Apache.Разделение проекта Django по субдоменам

Решение, которое я думал только о том, чтобы отобразить каждый из этих подразделов в соответствующее приложение через 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/ и т. Д., Создавая URL-адреса, такие как dashboard.example.com/dashboard/dashboard/. Я полагаю, что могу написать пользовательскую функцию reverse, чтобы вырезать ненужный подкаталог, но это похоже на полосу.

Есть ли лучший способ выполнить то, что мне нужно, или же я должен реструктурировать проект?

Благодарим за помощь.

ответ

1

рамки Джанго Сайты (https://docs.djangoproject.com/en/1.7/ref/contrib/sites/) должно быть достаточно для этого, если нет, то посмотрите на Джанго-поддоменов (http://django-subdomains.readthedocs.org/en/latest/), как кажется, есть средство решения ваших обратных ссылок (на основе от быстрого поиска Google, я никогда не использовал его сам!)

Смежные вопросы