Answers:
如果没有名称匹配,Apache将使用第一个虚拟主机。只需将新的虚拟主机配置为第一个具有随机名称的虚拟主机,即可显示任意内容-或返回404页面。
ports.conf
。这没有用,因为在虚拟主机上使用<ip>:80时,我尝试匹配*:80。相反,我必须为每个IP创建一个单独的默认条目,并且现在可以使用了。
通配符包括您的站点配置文件:
Include path/to/site/confs/*httpd.conf
组织您的站点conf文件,以便按预期顺序加载它们。例...
01-httpd.conf
02-site1-httpd.conf
03-site2-httpd.conf
等等...
Apache将按顺序阅读这些内容。然后创建一个将始终最后加载的虚拟主机,以捕获任何不匹配的虚拟主机,并返回404而不是加载默认站点。
99-catchall-httpd.conf
<VirtualHost *:8080>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
<VirtualHost *:8443>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
确保用httpd侦听的任何端口替换端口。或者,如果您在特定的接口上监听了httpd,则需要为每个接口添加一个catchall,如下所示:
<VirtualHost 192.168.1.101:8080>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.101:8443>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.102:8080>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.102:8443>
ServerName null
ServerAlias *
Redirect 404 /
</VirtualHost>
希望这可以帮助。我使用此方法按指定的顺序加载站点,并防止不匹配的虚拟主机无意中加载意外站点。
如前所述Moritz Both
,如果Apache2与您请求的主机不匹配,它将使用它找到的第一个虚拟主机。
首次安装Apache2时,有一个默认的网站conf,您可以将其用作模板,修改或删除,而我一直想知道000-default.conf的实际用途,因为它们也有default.conf。阅读完Moritz Both
所说的内容后,现在一切都变得有意义了。
我为服务器执行的操作是将默认主机名(网站)的配置复制到000-default.conf文件和a2ensite 000-default
。
现在,每当我的网站收到无与伦比的域名请求时,它都会提供000默认页面,这只是我实际默认页面的副本。
<VirtualHost *:443> ... Redirect / https://baseurl/ ... </VirtualHost>
但网址保持不变。对于非ssl版本,我已经做了同样的事情,它可以正确重定向。有任何想法吗?