我有一个Debian风格的Apache设置( sites-available , sites-enabled )与几个虚拟主机定义。 我有多个Alogging指向这台机器的单个IP地址。 我想为每个请求返回一个403状态给未指定为ServerName或ServerAlias我的站点configuration文件的主机。
我知道_default_但是这不起作用,因为它是一个IP地址,所有的请求都是相同的IP。
从Apache文档 :
如果找不到匹配的虚拟主机,则会从第一个虚拟主机提供请求,并在客户端所连接的IP的列表中显示匹配的端口号(如前所述)。
所以我们所要做的就是确保加载的第一个虚拟主机拒绝所有的请求。 要做到这一点(使用Debian风格的设置),可以在/etc/apache2/sites-available创build一个新文件,其文件名在所有站点中按字母顺序排列。 有一个名为000-default.conf的默认文件,它适用于这个目的。 把下面的指令放在这个文件中。
由于ServerName应始终设置 ,请将其设置为您的计算机的IP地址。
ServerName <your ip address>
将文档根目录设置为任何文件夹。 尽pipe我们将拒绝访问此文件夹,但如果它是一个空文件夹,以防万一以后出现错误configuration,这将是最安全的。
DocumentRoot /var/www/html
拒绝访问此文件夹。
<Directory /var/www/html> Require all denied </Directory>
所以现在000-default将拒绝所有请求,并且它是第一个加载的虚拟主机,所以任何不匹配ServerName或ServerAlias主机都将默认为它。
使用a2ensite 000-default启用此站点,并使用service apache2 reload载入您的configuration,然后您就可以开始了。