我无法拒绝使用Apache中的自定义DocumentRoot访问服务器文件系统?

CentOS 7.1 – Apache 2.4.6

默认configuration包含以下内容:

.... <Directory /> AllowOverride none Require all denied </Directory> ... DocumentRoot "/var/www/html" 

如果我更改DocumentRoot,我会得到:

403 – 您无权访问/在此服务器上。

经过几个小时的四重检查目录configuration和文件系统权限,我试图删除上面的块…成功! 一切正常。

  • 这是否应该发生?
  • 难道我做错了什么?
  • 什么是安全影响?

我所做的全部更改将使用以下内容replace默认部分:

 DocumentRoot "/srv/http" <Directory "/srv/http"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny allow from all </Directory> 

Apache 2.2使用以下configuration来声明访问某些目录:

 Order deny,allow Deny from all 

Apache 2.4使用以下内容:

 Require all denied 

更多信息在这里 。 奇怪的是,你设法使用第一种configuration风格,因为这只适用于Apache 2.2。 尝试运行这个:

 httpd -v 

它会输出你正在使用的Apache版本, 也许它会帮助你清理一些东西。

似乎在DocumentRootpath的Directoryconfiguration中,访问需要按如下方式指定,以便覆盖顶层拒绝:

 Require all granted 

我想我有更多的阅读要做…按照Apache文档 :

mod_access_compat提供的“ Allow Deny和“ Order指令已被弃用,并将在未来的版本中消失。 你应该避免使用它们,并避免过时的教程推荐使用它们。