Apache 仅访问主机名而不是 ip

Apache 仅访问主机名而不是 ip

有谁知道是否可以按以下方式设置 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 地址。

相关内容