让Apache只提供配置的VHost

时间:2014-01-15 13:45:05

标签: apache vhosts

是否有可能告诉Apache只提供配置的VHost?我目前的解决方案是使用带有*作为别名的VHost,当以前的VHost匹配时使用该别名。

2 个答案:

答案 0 :(得分:2)

在Apache中,如果没有其他VirtualHost匹配,则第一个列出的VirtualHost是默认的。因此,您可以创建一个没有内容的虚拟VirtualHost,或者只创建一个登录页面(“此地址未配置站点”或类似内容),并将其作为您的第一个VirtualHost。不需要ServerAlias的ServerName,只要它是第一个。

另请参阅:http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html

答案 1 :(得分:1)

我通常做的是禁止访问conf.d / security文件中的根目录(这是Ubuntu中的标准方式,在其他操作系统中你可以将它放在httpd.conf中)

<Directory />
   AllowOverride None
   Order Deny,Allow
   Deny from all
</Directory>

因此,Apache只允许访问VirtualHosts中配置的子目录。例如,您可以:

/var/www/example1.domain.com/your_files
/var/www/example2.domain.com/your_files

让VirtualHosts像这样:

    ServerName example1.domain.com

    ErrorLog /var/log/apache2/example1.domain.com_error.log
    CustomLog /var/log/apache2/example1.domain.com_access.log Combined

    DocumentRoot /var/www/example1.domain.com/

    (...)

    <Directory />
        Options FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

    ServerName example2.domain.com

    ErrorLog /var/log/apache2/example2.domain.com_error.log
    CustomLog /var/log/apache2/example2.domain.com_access.log Combined

    DocumentRoot /var/www/example2.domain.com/

    (...)

    <Directory />
        Options FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

但是,mrjink指出,此配置将使用第一个VirtualHost将服务器以某种方式到达服务器的所有请求(通过ip或未知主机名)。因此,需要一个额外的Dummy VirtualHost,其名称应该类似于“000-dummy-virtualhost”,以确保它是第一个为这些请求提供服务的VirtualHost。

有了这个conf,您的服务器或IP的请求将不会被提供,但是对example1.domain.com或example2.domain.com的请求将会被提供。

此致