![让 apache 对非虚拟主机的所有内容返回 403](https://linux22.com/image/711182/%E8%AE%A9%20apache%20%E5%AF%B9%E9%9D%9E%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E7%9A%84%E6%89%80%E6%9C%89%E5%86%85%E5%AE%B9%E8%BF%94%E5%9B%9E%20403.png)
我有一个 Debian 风格的 Apache 设置 ( sites-available
, sites-enabled
),其中定义了几个虚拟主机。我有多个记录指向这台机器的单个 IP 地址。我想对未指定为或我的站点配置文件的A
主机的每个请求返回 403 状态。ServerName
ServerAlias
我知道_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
,您就可以开始了。