我正在尝试将 Apache 配置为通过 mod_wsgi 托管多个 django 站点。mod_wsgi 设置教程给出了这个场景的示例配置,其中每个应用程序都在同一个目录中:
WSGIScriptAliasMatch ^/([^/]+) /usr/local/django/$1/apache/django.wsgi
<DirectoryMatch ^/usr/local/django/([^/]+)/apache>
Order deny,allow
Allow from all
</DirectoryMatch>
我正在尝试扩展此示例以添加为每个应用程序创建的密码文件以使用 http 身份验证。我想我可以通过为每个应用程序设置一个单独的并行目录并以在 WSGIScriptAliasMatch 中完成的方式引用匹配的目录名称来做到这一点,如下所示:
WSGIScriptAliasMatch ^/([^/]+) /usr/local/django/$1/apache/django.wsgi
<DirectoryMatch ^/usr/local/django/([^/]+)/apache>
AuthType Basic
AuthUserFile /usr/local/django-auth/$1/users.passwd
AuthGroupFile /dev/null
Require valid-user
</DirectoryMatch>
我曾假设'$1' 会扩展到与 DirectoryMatch 的正则表达式匹配的参数,但是我无法进行身份验证并且我的错误日志指出:
No such file or directory: Could not open password file: /usr/local/django-auth/$1/users.passwd
因此,似乎 '$1' 并没有像我想象的那样被用于匹配的应用程序。有没有办法做到这一点?我不想在每个站点弹出时都为其添加新指令。