3

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

我想到的选项:

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

有标准方法吗?

谢谢!

4

2 回答 2

13

我去 apache 配置:

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

HTH。

于 2012-10-18T17:28:46.350 回答
2

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

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

  2. 根据您的 Apache 配置,进程还可以占用大量内存并保持它,直到它达到 MaxRequests。如果您在 /admin 中有内存密集型代码(很多人都这样做),那么您最终可能会得到 Apache 进程,这些进程占用的内存比他们需要的多得多。如果您将 Apache 配置拆分为 /admin 和 /!admin ,您可以调整 apache 设置以拥有更多 /!admin 服务器,从而需要更小的潜在足迹。

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

    • 我想确保代理只将 /admin 发送到某个 Apache 端口。
    • 我想确保 Apache 仅在某些 apache 端口上接收 /admin,并且它来自代理(带有秘密标头)或来自 localhost。
    • 我想确保 WSGI 仅根据某些服务器/客户端条件运行 /admin 的东西。
于 2012-10-18T17:44:23.063 回答