django - 在子域上提供 Django 管理站点

标签 django nginx django-admin uwsgi django-authentication

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

最好的方法是什么?

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

(我这样做的原因是最终想要使用类似 google auth proxy 的东西来保护管理站点,但让非管理员登录通过正常的身份验证后端。看起来我可以通过指定 Django 使用 HTTP Basic 来做到这一点对 admin.example.com 进行身份验证,但坚持使用 example.com 的默认后端。)

最佳答案

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

例如:

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)),
)

关于django - 在子域上提供 Django 管理站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26004217/

相关文章:

Django session 在 View 之外

javascript - 检查用户是否登录时 Django 模板错误

browser - 如何根据客户端浏览器的语言在 nginx 中重写位置?

Django Admin - 重新认证?

使用 Bootstrap 呈现的 Django FilteredSelectMultiple 小部件

python - 在 Django Admin 中的自定义列表过滤中将 modeladmin 作为参数传递

python - Django / python : error when get value from dictionary

python - sessionid 的 Django (Python) 问题

php - nginx 无法加载索引文件

ssl - 如何修复 nginx 多域 SSL 错误