2012-10-18 62 views
2

使Django/admin/urls只能访问本地主机的最简单方法是什么?如何让Django管理员URL只能访问本地主机?

选项我已经想到了:

  • 单独的管理界面了项目(在某种程度上),并运行为不同的虚拟主机(在Apache2的)
  • 使用在主机的前代理( Apache2)web服务器
  • 以某种方式限制WSGI中Apache内的URL。

是否有标准方法?

谢谢!

回答

10

标识去Apache配置:

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

HTH。

+0

简单和第一次工作。 – wodow

2

我会去的Apache配置+在前面跑的代理+在WSGI限制:

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

  2. 取决于你的Apache配置,一个进程还可以汲取大量内存并保持它,直到它遇到MaxRequests。如果你在/ admin中有很多内存密集的代码(很多人都这样做),那么你最终可能会获得比他们需要的更多内存的Apache进程。如果你将你的Apache配置分为/ admin和/!admin,你可以调整你的apache设置,让更多的/!管理服务器需要更小的占用空间。

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

    • 我想确保代理只发送/管理到某个Apache端口。
    • 我想确保Apache只接收/管理某些apache端口,并且它来自代理(带有秘密标头)或来自本地主机。
    • 我想确保WSGI仅基于特定的服务器/客户端条件运行/管理员的东西。
+0

一个很好的答案 - 谢谢!我明白,这是全面覆盖的方式。 – wodow

+0

是的,这没什么更多的工作,并且你可以安心和服务器性能得到改善。您还可以通过环境变量和部署脚本在“开发vs登台和生产”上以不同的方式工作。 –

+0

您不需要单独的Apache来分割URL部分。您可以通过将不同部分的URL名称空间委托给不同的守护进程进程组来处理它,并使用mod_wsgi守护进程模式。然后,您可以分别控制进程/线程数量和自动重新启动进程,通过为特定的守护进程组设置它来为一组子URL分别进行控制。另外,在前面使用香草Apache作为代理仍然有许多与Apache直接面对相同的问题。使用nginx作为代理仍然好得多。 –

相关问题