Django
自动提供admin url
,例如www.example.com/admin
。
我不希望任何外部访问者访问此网址。这应仅在主机中访问并允许IP address
。
如果我尝试访问https://instagram.com/admin/
(使用Django
构建),则会404 page not Found error
我怎样才能达到同样的行为?
这样做的首选和正确方法是什么?
我在webservice
中托管webfaction
并允许IP address
主机意味着其他webfaction帐户持有者可能能够访问我不想要的管理URL。寻找一种简洁明了的方式
感谢:
PS:我在这里发布了一个类似的问题,但这与PHP有关。我想知道如何使用Django
实现相同的效果?
答案 0 :(得分:10)
Django的Two Scoops倡导的一种常用方法是更改您的管理URL。因此,您不必在www.example.com/admin/
登录管理员,而是登录www.example.com/supers3cret4dm1n/
或您已设置的内容。这可能是Instagram在你的例子中所做的。
示例代码:
urlpatterns = patterns(''
...
url(r'^supers3cret4dm1n/', include(admin.site.urls)), # Change the pattern to whatever you want here
...
)
请注意,这并不能仅通过一个IP地址访问,但它确实可以有效地隐藏'您的管理员登录页面。
另一个提示是使用django-admin-honeypot
包。这会在www.example.com/admin
设置虚假管理页面,同时在您设置的其他网站上显示您的真实管理页面。然后,django-admin-honeypot会提醒你是否有人试图在假管理站点破解你的管理员。
编辑:
如果你因为IP地址限制而死定,here's一个SO问答,显示如何使用nginx进行限制。我想它与其他人相似。