让所有不是虚拟主机的东西都返回403

我有一个Debian风格的Apache设置( sites-availablesites-enabled )与几个虚拟主机定义。 我有多个Alogging指向这台机器的单个IP地址。 我想为每个请求返回一个403状态给未指定为ServerNameServerAlias我的站点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将拒绝所有请求,并且它是第一个加载的虚拟主机,所以任何不匹配ServerNameServerAlias主机都将默认为它。

使用a2ensite 000-default启用此站点,并使用service apache2 reload载入您的configuration,然后您就可以开始了。