带有 HTTPD Apache 2.4 的 Fedora 29
默认情况下,对服务器目录系统的访问受 httpd.conf 中的此项保护:
<Directory />
AllowOverride none
Require all denied
</Directory>
...并根据每个目录使用进一步的<directory>
规则进行覆盖;因此,我有如下所示的虚拟主机块,我想运行测试以确保<Directory "/">
不允许访问 DocumentRoot 之外的内容。我该怎么做?
<VirtualHost insurgent.info:80>
DocumentRoot "/var/httpd/insurgent"
ServerName insurgent.info
<Directory "/">
Require all granted
Options Indexes FollowSymLinks IncludesNoExec
AllowOverride None
XBitHack Full
</Directory>
<Directory "/var/httpd/insurgent/.cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/httpd/insurgent/.cgi-bin/"
</IfModule>
</VirtualHost>
答案1
目录指向文件系统中的一个目录,因此在虚拟主机中指定
<Directory /var/httpd/insurgent>
Require all granted
#other directives
</Directory>
允许访问您的文档根目录。
官方文档对此有非常具体的说明: http://httpd.apache.org/docs/2.4/mod/core.html#directory
指向 / 的条目应该只在服务器配置上下文中
<Directory />
AllowOverride none
Require all denied
</Directory>
并且确实需要禁止其他地方的访问,但不要在虚拟主机中使用它!