是否有可能取代“*”的域名或子域?
<VirtualHost *:443>
更新
问题是,我得到这个启动Apache的错误:
[Mon Aug 16 13:42:48 2010] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
我有一个虚拟主机:443一个子域和一个主域。 当我删除子域时,我不再得到这个错误。
作为一个侧面说明,如果这种configuration可以更有效率,请让我知道如何
domain.comconfiguration
<VirtualHost *:80> ServerAdmin [email protected] ServerName www.domain.com ServerAlias domain.com ServerAlias xx.xxx.xxx.xx # Directory Root. DocumentRoot /sites/domain.com/www/ # Logfiles ErrorLog /sites/domain.com/logs/error.log CustomLog /sites/domain.com/logs/access.log combined </VirtualHost> <VirtualHost *:443> ServerName www.domain.com # Directory Root. DocumentRoot /sites/domain.com/www/ # Enable SSL SSLEngine On SSLCertificateFile /sites/domain.com/ssl/star_domain_com.crt SSLCertificateKeyFile /sites/domain.com/ssl/ikeyless.key SSLCertificateChainFile /sites/domain.com/ssl/DigiCertCA.crt SetEnvIf User-Agent ..*MSIE.*. nokeepalive ssl-unclean-shutdown </VirtualHost>
support.domain.comconfiguration
<VirtualHost *:80> ServerName support.domain.com # Directory Root. DocumentRoot /sites/support.domain.com/www/ # Logfiles ErrorLog /sites/support.domain.com/logs/error.log CustomLog /sites/support.domain.com/logs/access.log combined </VirtualHost> <VirtualHost *:443> ServerName support.domain.com # Directory Root. DocumentRoot /sites/support.domain.com/www/ # Logfiles ErrorLog /sites/support.domain.com/logs/error.log CustomLog /sites/support.domain.com/logs/access.log combined # Enable SSL SSLEngine On SSLCertificateFile /sites/domain.com/ssl/star_domain_com.crt SSLCertificateKeyFile /sites/domain.com/ssl/domain.key SSLCertificateChainFile /sites/domain.com/ssl/DigiCertCA.crt SetEnvIf User-Agent ..*MSIE.*. nokeepalive ssl-unclean-shutdown </VirtualHost>
当我尝试访问support.domain.com它指向domain.com并不会加载我们的支持网站,当在https中,它在http中工作正常。
是的,这是apacheconfiguration中非常强大的一部分。
例如,假设您正在为域http://www.domain.tld提供服务,并且希望添加指向相同IP地址的虚拟主机http://www.otherdomain.tld 。 然后你简单地将以下内容添加到httpd.conf中:
NameVirtualHost *:80 <VirtualHost *:80> ServerName www.domain.tld ServerAlias domain.tld *.domain.tld DocumentRoot /www/domain </VirtualHost> <VirtualHost *:80> ServerName www.otherdomain.tld DocumentRoot /www/otherdomain </VirtualHost>
在这里查看完整的文档: http : //httpd.apache.org/docs/2.2/vhosts/
最终答案:将NameVirtualHost *:443指令添加到您的默认configuration中。
只要使用NameVirtualHost指定了IP,就可以用星号指定一个特定的IP。 该名称在ServerName和ServerAlias指定。
星号与VirtualHost绑定的所有IP地址相匹配。
你做了什么与默认虚拟主机,它使?
如果你不做任何定制,apache会为conf.d / ssl.conf中的一些SSL文件创build一个单独的configuration文件,并在那里声明一个名为_default_:443的虚拟主机。
如果我在主configuration中添加一个名为*:443的虚拟主机,它会给出相同的错误,如果我删除了conf.d / ssl.conf中的_default_:443虚拟主机,则不会。
不适用于SSL:
您不能使用基于名称的虚拟主机与SSL,因为SSL握手(当浏览器接受安全Web服务器的证书时)发生在HTTP请求之前,该请求标识了基于虚拟主机的适当名称。 如果您打算使用基于名称的虚拟主机,请记住,它们只能与您的非安全Web服务器一起使用。
更新:
显然最新的networking服务器支持这..检查由华纳提供的链接。
我们通过将所有SSL放在特定IP地址上,然后将所有其他站点放在辅助IP上解决了这个问题。 当我们这样做时,一切都奏效了。