如何让Django管理URL只能访问localhost?

时间:2012-10-18 17:19:28

标签: python django apache wsgi django-wsgi

让Django / admin / urls只能访问localhost的最简单方法是什么?

我想到的选项:

  • 将管理站点分离出项目(以某种方式)并作为不同的虚拟主机运行(在Apache2中)
  • 在托管(Apache2)Web服务器
  • 前使用代理
  • 以某种方式限制WSGI中Apache的URL。

有标准方法吗?

谢谢!

2 个答案:

答案 0 :(得分:10)

我想去apache配置:

<Location /admin>
    Order Deny, Allow
    Deny from all
    Allow from 127.0.0.1
</Location>

HTH。

答案 1 :(得分:2)

我会选择Apache配置+在WSGI中运行代理+限制:

  1. 在涉及动态内容生成时,我不喜欢Apache与Web客户端进行通信。由于它的执行模型,缓慢或断开连接的客户端可以占用Apache进程。如果你前面有一个代理(我更喜欢nginx,但即使是一个vanilla apache也可以),代理会担心客户端,而Apache可以专注于新的动态内容请求。

  2. 根据您的Apache配置,进程还可以囤积大量内存并保留它直到它达到MaxRequests。如果你在/ admin(很多人都有)中有内存密集型代码,你最终可能会获得比他们需要的内存更多的Apache进程。如果将Apache配置拆分为/ admin和/!admin,则可以调整apache设置以使更多的/!admin服务器需要更小的潜在占用空间。

  3. 我是偏执的服务器设置。

    • 我想确保代理只发送/ admin到某个Apache端口。
    • 我想确保Apache只在某个apache端口上接收/ admin,并且它来自代理(带有秘密标头)或来自localhost。
    • 我想确保WSGI仅根据某些服务器/客户端条件运行/ admin资料。