apache2提示“Access denied”,状态码404,第一反应是apache2的用户www-data对文件没有权限,但是奇怪的是,对于接口访问(php)确是OK的,所有的资源文件都访问不了,查了以下,是有读权限的,查了站点下的error.log:
[Thu Apr 09 14:33:55.072565 2020] [proxy_fcgi:error] [pid 23:tid 140714637768448] [client 172.18.0.1:49334] AH01071: Got error 'Access to the script '/var/www/xxx/public/logo.png' has been denied (see security.limit_extensions)\n'
注意关键点:proxy_fcgi:error
`,我想,访问资源文件跟fcgi有什么关系呢?那我是不是有可能把所有的请求都转发给php了呢?
继续检查apache配置文件,终于发现:
<FilesMatch .*$>
SetHandler "proxy:fcgi://php72:9000"
</FilesMatch>
有问题!
果然所有的请求都会转发到php去了!遂按照示例配置改成如下:
<FilesMatch \.(cgi|shtml|phtml|php)$>
SetHandler "proxy:fcgi://php72:9000"
</FilesMatch>
重启 apache:docker-compose restart apache2
,问题解决!