我在/app
安装了一个WSGI脚本。如果我请求/app/resource
,我会得到正确答案。但我还在我的错误日志中输入一个条目,就好像我曾请求/resource
一样。什么可能导致这种情况?
我在AWS EC2上部署了使用Apache 2.4 + mod_wsgi的Flask应用程序:
/my/app/path
app.wsgi
文件位于/var/www/wsgi
并指向/my/app/path
www.website.com
vhost的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应用程序通过别名指令正确传递和处理。
所以:为什么我可以在我的错误日志中找到这些条目,其中删除了/app
路径,并在根上直接附加(并正确拒绝)了资源路径?
在评论中回应格雷厄姆的建议:
一位同事告诉我他在AWS EC2实例上遇到了同样的问题。