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

时间:2016-05-18 08:41:41

标签: apache amazon-ec2 flask mod-wsgi error-log

简介

我在/app安装了一个WSGI脚本。如果我请求/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.com vhost的Apache配置指向WSGI脚本:
    WSGIScriptAlias /app /var/www/wsgi/app.wsgi
  4. 当我获得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应用程序通过别名指令正确传递和处理。

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

    后续

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

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

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

0 个答案:

没有答案