CentOS 7.1-Apache 2.4.6
默认配置包含以下内容:
....
<Directory />
AllowOverride none
Require all denied
</Directory>
...
DocumentRoot "/var/www/html"
如果我更改 DocumentRoot,我会得到:
403- 您无权访问/在此服务器上。
经过几个小时的四次检查目录配置和文件系统权限后,我尝试删除上面的阻止...成功!一切正常。
- 这是应该发生的吗?
- 难道我做错了什么?
- 这会带来哪些安全隐患?
我的全部更改是用以下内容替换默认部分:
DocumentRoot "/srv/http"
<Directory "/srv/http">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
答案1
Apache 2.2 使用以下配置来声明对某些目录的访问权限:
Order deny,allow
Deny from all
Apache 2.4 使用以下内容:
Require all denied
更多信息这里。你设法让它使用第一种配置风格工作,这很奇怪,因为那只适用于 apache 2.2。尝试运行此命令:
httpd -v
它将输出你正在使用的 Apache 版本,以及或许它会帮助你理清一些心中的事情。
答案2
似乎在Directory
路径配置中DocumentRoot
,访问需求为了能够覆盖顶层拒绝,需要指定如下内容:
Require all granted
我想我还有很多书要读……Apache 文档:
提供的
Allow
Deny
和指令已弃用,并将在未来版本中消失。您应避免使用它们,并避免使用推荐使用它们的过时教程。Order
mod_access_compat