有谁知道是否可以按以下方式设置 apache vhost:
- 如果用户访问 www.example.com 则 vhost 将其带到 /www/example.com
- 如果用户访问 www.example2.com 则 vhost 将其带到 /www/example2.com
- 如果用户访问 IP 为 1.2.3.4 的服务器,则会获取一些默认页面 /www/default
是否可以进行通用配置以避免其中包含服务器的确切 IP 地址?(这样,如果服务器 IP 发生变化,则无需更改配置文件)
答案1
对于您的默认页面,它会喜欢这个(这允许任何 IP 地址转到默认页面)。 * 是 IP 地址的通配符。
NameVirtualHost *:80
对于虚拟主机,您的配置文件将如下所示:
<VirtualHost *:80>
DocumentRoot "/www/example1.com/"
ServerName example1.com
ServerAlias www.example1.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/www/example2.com/"
ServerName example1.com
ServerAlias www.example1.com
</VirtualHost>
答案2
如果您对虚拟主机使用单独的配置文件,例如在子目录 /etc/apache2/vhosts.d/ 中,那么您只需创建一个名称以 0_ 开头的配置,然后使用任意名称 (0_default_host.conf) 并使用任意 ServerName。此配置将用于没有正确主机名的每个请求。
在此配置文件中,您可以创建一个重定向,将每个请求重定向到无内容。类似这样的内容:RewriteRule .* - [F]
此设置将阻止其他配置文件未处理的每个主机名和 IP 地址。