我在 Debian 不稳定版上运行 Apache 2.4.7。当我尝试运行超音速使用 mod_wsgi 模块。我将 wsgi 和 authz_core 的 LogLevel 调高到trace6
,但仍然没有收到任何有用的消息。请注意,我使用的是mod_access_compat
,因此 Order ... Allow 组合有效。
我想具体查看哪个配置文件(例如某个地方的某个 .htaccess 文件,或者标准 apache 或 debian 配置文件之一)以及哪一行包含生成 403 错误的规则。
我手动遍历了这棵树,在每个级别检查运行 Web 服务器的用户是否具有文件的读取权限,以及目录的读取和执行权限。
我的/etc/apache2/apache.conf
文件包含以下行:
LogLevel info authz_core:trace6 wsgi:trace6
supysonic 的 apache 配置文件/etc/apache2/conf-enabled/supysonic.conf
是:
WSGIScriptAlias /supysonic /mnt/large_vol/home/bminton/public_html/programs/supysonic
<Directory /mnt/large_vol/home/bminton/public_html/programs/supysonic>
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
错误日志包含以下几行:
[Wed Jan 15 08:40:34.106119 2014] [authz_core:debug] [pid 13558] mod_authz_core.c(802): [client 127.0.0.1:58438] AH01626: authorization result of Require all denied: denied
[Wed Jan 15 08:40:34.106197 2014] [authz_core:debug] [pid 13558] mod_authz_core.c(802): [client 127.0.0.1:58438] AH01626: authorization result of <RequireAny>: denied
[Wed Jan 15 08:40:34.106208 2014] [authz_core:error] [pid 13558] [client 127.0.0.1:58438] AH01630: client denied by server configuration: /mnt/large_vol/home/bminton/public_html/programs/supysonic
[Wed Jan 15 08:40:34.113336 2014] [:info] [pid 13571] mod_wsgi (pid=13571): Initializing Python.
[Wed Jan 15 08:40:34.154407 2014] [:info] [pid 13571] mod_wsgi (pid=13571): Attach interpreter ''.
答案1
403 错误与用户授权有关,实际上与您的应用程序代码无关。
你说你使用的是 apache 2.4 版本,那么这肯定是错误的:
Order deny,allow
Allow from all
现在应该这样写(仅 1 行):
Require all granted
答案2
我遇到了类似的问题,这个问题困扰了我很长时间。以下是最终对我有用的方法:
WSGIScriptAlias /supysonic /var/www/supysonic/supysonic.wsgi
WSGIDaemonProcess /supysonic user=#1000 group=#1000
WSGIProcessGroup /supysonic
<Directory /var/www/supysonic>
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
Require all granted
</Directory>`