Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使Django管理员URL仅可供localhost访问?_Python_Django_Apache_Wsgi_Django Wsgi - Fatal编程技术网

Python 如何使Django管理员URL仅可供localhost访问?

Python 如何使Django管理员URL仅可供localhost访问?,python,django,apache,wsgi,django-wsgi,Python,Django,Apache,Wsgi,Django Wsgi,使Django/admin/URL仅可供本地主机访问的最简单方法是什么 我想到的选择是: 将管理站点从项目中分离出来(以某种方式),并作为不同的虚拟主机运行(在Apache2中) 在托管(Apache2)web服务器前使用代理 在WSGI中以某种方式限制Apache中的URL 有没有标准的方法 谢谢 我选择apache配置: <Location /admin> Order Deny, Allow Deny from all Allow from 127.0

使Django/admin/URL仅可供本地主机访问的最简单方法是什么

我想到的选择是:

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


谢谢

我选择apache配置:

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

命令拒绝,允许
全盘否定
允许从127.0.0.1开始

HTH.

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

  • 我不喜欢Apache在涉及动态内容生成时与web客户端通信。由于它的执行模型,速度慢或断开连接的客户端可能会阻塞Apache进程。如果您前面有一个代理(我更喜欢nginx,但即使是一个普通的apache也可以),代理会担心客户端,apache可以专注于一个新的动态内容请求

  • 根据您的Apache配置,进程还可以占用大量内存并一直保持到遇到MaxRequests。如果您在/admin中有内存密集型代码(很多人都有),那么最终可能会出现Apache进程,这些进程占用的内存远远超过它们所需的内存。如果将Apache配置拆分为/admin和/!管理员,您可以调整您的apache设置以获得更多的/!需要较小潜在占用空间的管理服务器

  • 我对服务器设置有点偏执

    • 我想确保代理只向某个Apache端口发送/admin
    • 我想确保Apache只在某些Apache端口上接收/admin,并且它来自代理(带有一个秘密头)或本地主机
    • 我想确保WSGI只运行基于特定服务器/客户端条件的/admin内容

  • 一个很好的答案-谢谢!我明白了,这是一个全面覆盖的方法。是的,这不需要太多的工作,而且您可以获得一些安心+服务器性能改进。您还可以通过环境变量和部署脚本让它在“开发vs登台vs生产”上以不同的方式工作。通过将URL命名空间的不同部分委托给不同的守护进程组,您可以使用mod_wsgi守护进程模式来处理这个问题。然后,通过为特定的守护进程进程组设置URL子集,您可以分别控制进程/线程的数量,并分别自动重新启动URL子集的进程。另外,在前端使用普通Apache作为代理仍然存在许多与直接面向Apache相同的问题。使用nginx作为代理仍然更好。