在子域上提供Django管理站点

时间:2014-09-23 20:31:00

标签: django nginx django-admin uwsgi django-authentication

我有一个运行Django,uWSGI和Nginx的项目。目前我使用默认的Django管理站点,在example.com/admin提供服务。我想更改此设置,以便管理网站仅在admin.example.com处可用。

这样做的最佳方式是什么?

我曾考虑过要在admin.example.com上启动一个全新的Django项目,但是使用与运行example.com的项目相同的数据库设置,但是我希望有更优雅的东西,因为这个将涉及在项目之间复制许多设置和应用程序。基本上两者之间的唯一区别是,一个人会安装管理站点和URL模式,一个人不会。

(我的理由是最终想要使用类似google auth proxy的东西来保护管理站点,但是非管理员登录会通过正常的身份验证后端。看起来我可以通过指定Django使用来实现这一点admin.example.com的HTTP基本身份验证,但坚持example.com的默认后端。)

1 个答案:

答案 0 :(得分:6)

只需创建一个包含原始设置的新设置文件,并定义一个特殊的ROOT_URLCONF设置。现在,您只需要在该管理子域上使用DJANGO_SETTINGS_MODULE部署您的应用。

e.g:

settings_admin.py

from settings import *
ROOT_URLCONF = 'urls_admin'

urls_admin.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('',
    url(r'', include(admin.site.urls)),
)