当主机标头不正确时让 Apache 忽略请求

问题描述 投票:0回答:2

我希望 Apache 2.4.x 忽略(即不响应)任何与特定域名不匹配的请求。我的配置如下:

<VirtualHost *:443>
 ServerName foobar.com
 RedirectMatch /(.*) https://www.foobar.com/$1
 ...
</VirtualHost>

<VirtualHost *:443>
 ServerName www.foobar.com

 ServerAdmin webmaster@localhost
 DocumentRoot /var/www/html
        ...
</VirtualHost>

ServerName 字段是否足以指示 Apache 不响应与我的 VirtualHosts 中的任何 ServerName 值不匹配的请求?

我希望 Apache 的行为方式是查看 Host 请求标头,将其与上面的 ServerName 字段进行比较,并忽略 Host 标头值与任何内容都不匹配的请求。

我的网站仅支持 https,端口 80 未开放。

apache virtualhost
2个回答
0
投票

总会有一些答案,因为必须建立连接才能看到主机标头。

由于您仅使用 https,因此未知或未配置的域的证书协商可能会失败。

一般来说,您应该为所有已知域配置虚拟主机,并针对任何不匹配的请求回退到默认虚拟主机。

客户端将会看到证书错误,对此您无能为力。但您可以控制向所有未收到证书错误或仍然选择连接的客户端显示的消息。您可以通过相应地显式配置default虚拟主机来做到这一点。


0
投票

使用“require”指令。

Require %{HTTP_HOST} -strcmatch 'foobar.com'

如果主机不匹配,将返回 http 状态 403(禁止)

© www.soinside.com 2019 - 2024. All rights reserved.