让 apache 对非虚拟主机的所有内容返回 403

让 apache 对非虚拟主机的所有内容返回 403

我有一个 Debian 风格的 Apache 设置 ( sites-available, sites-enabled),其中定义了几个虚拟主机。我有多个记录指向这台机器的单个 IP 地址。我想对未指定为或我的站点配置文件的A主机的每个请求返回 403 状态。ServerNameServerAlias

我知道_default_但这不起作用,因为它是 IP 的集合,并且所有请求都针对同一个 IP。

答案1

来自Apache 文档

如果找不到匹配的虚拟主机,则从客户端连接的 IP 列表中具有匹配端口号的第一个虚拟主机提供请求(如前所述)。

因此,我们需要做的就是确保第一个加载的虚拟主机拒绝所有请求。为此(使用 Debian 样式的设置),创建一个新文件,/etc/apache2/sites-available其文件名按字母顺序排列在所有站点中的第一个。有一个名为 的默认文件000-default.conf非常适合此目的。将以下指令放入此文件中。

因为ServerName应该始终被设置,将其设置为你的机器的IP地址。

ServerName <your ip address>

将文档根目录设置为任意文件夹。虽然我们将拒绝访问此文件夹,但如果它是一个空文件夹,则最安全,以防以后出现配置错误。

DocumentRoot /var/www/html

拒绝访问该文件夹。

<Directory /var/www/html>
    Require all denied
</Directory>

所以现在000-default将拒绝所有请求,并且它是第一个加载的虚拟主机,因此任何不匹配ServerName或的主机ServerAlias都将默认使用它。

启用此站点a2ensite 000-default并重新加载您的配置service apache2 reload,您就可以开始了。

相关内容