是否可以在Apache + mod_wsgi(the standard way)上部署Django应用程序,但在整个事情面前使用HTTP身份验证?
基本上,在任何Django认证或匿名用户甚至能够访问该应用之前,我需要额外的HTTP安全层。
这可能吗?如果是这样,Apache auth
指令在哪里?
答案 0 :(得分:2)
是的,这是可能的。
使用/
上的mod_wsgi,apache提供的任何资源都需要列为别名。
Auth指令和主机限制存在于Location
指令中。
所以我已经禁用了对css之类的任何apache访问限制,并提供了对另一个目录的基于主机/ ip的访问。
<VirtualHost *:80>
Servername app.domain.example
CustomLog logs/access_log combined
ErrorLog logs/error_log
DocumentRoot "/home/app/apache/app/html"
Alias /media/ /home/app/apache/app/html/media/
<Location />
Options None
AuthType Basic
AuthName "Login Prompt"
AuthUserFile /path/to/passwd.file
Require valid-user
</Location>
<Location /media>
Order allow,deny
Allow from all
Satisfy any
</Location>
WSGIDaemonProcess app user=app group=app processes=5 threads=1 display-name=app_WSGI
WSGIProcessGroup app
WSGIScriptAlias / /home/app/apache/app.wsgi
</VirtualHost>
答案 1 :(得分:2)
当然,这是一个网站的例子:
<VirtualHost *:80>
ServerName djangoproject.domain.biz
DocumentRoot "/home/user/websites/djangoproject/website/"
WSGIDaemonProcess djangoproject python-path=/home/user/.virtualenvs/djangoproject/lib/python2
.6/site-packages/ user=user group=user threads=1
WSGIProcessGroup djangoproject
WSGIScriptAlias / /home/user/websites/djangoproject/website/django.wsgi
<Directory "/home/user/websites/djangoproject/website/">
Order deny,allow
Allow from all
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /etc/apache2/passwords
Require valid-user
</Directory>
</VirtualHost>