Flask + mod_wsgi + httpd:在DocumentRoot上尝试了所有资源?

A. *_*dor 6 apache mod-wsgi error-log amazon-ec2 flask

简单来说

我安装了一个WSGI脚本/app.如果我要求/app/resource,我得到正确答复.但我也在错误日志中输入了一个条目,就像我要求的那样/resource.什么可能导致这个?

详细地

我在AWS EC2上使用Apache 2.4 + mod_wsgi部署了Flask应用程序:

  1. 该应用程序存在于 /my/app/path
  2. app.wsgi文件存在/var/www/wsgi并指向/my/app/path
  3. www.website.comvhost 的Apache配置指向WSGI脚本:
    WSGIScriptAlias /app /var/www/wsgi/app.wsgi

当我获取时www.website.com/app/some_resource/...,通过代码收到该资源的预期响应200.

但是,当我检查Apache错误日志时,我会发现拒绝请求的大量条目,例如:

[authz_core:error] [pid XXXXX] [client XXXXX] XXXXX: client denied by server configuration: /var/www/html/some_resource

记录的错误与所述请求一一对应,如上所述,请求返回200.

现在,/var/www/html是默认的DocumentRoot,但请求被发送到该/app位置,并由WSGI应用程序通过alias指令正确传递和处理.

所以:为什么我可以在我的错误日志中找到这些条目,其中/app路径被删除,并且在根上直接附加(并正确拒绝)的资源路径?

跟进

在评论中回应格雷厄姆的建议:

  1. 没有定义Apache重写规则.
  2. Apache没有使用MultiViews进行设置
  3. 这些是JSON资源; 错误不是加载文档的子请求的结果.
  4. 问题在没有符号链接的情况下仍然存在.

更新

一位同事告诉我他在AWS EC2实例上遇到了同样的问题.