Apache 虚拟主机(按名称)

Web*_*net 2 linux ssl apache-2.2

是否可以用域名或子域替换“*”?

<VirtualHost *:443>

更新

问题是我在启动 apache 时遇到这个错误:

[Mon Aug 16 13:42:48 2010] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
Run Code Online (Sandbox Code Playgroud)

我在 :443 上有一个用于子域的虚拟主机和一个用于主域的虚拟主机。当我删除子域时,我不再收到该错误。

作为旁注,如果此配置可以更有效,请告诉我如何

domain.com 配置

<VirtualHost *:80>
 ServerAdmin webmaster@domain.com
 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>
Run Code Online (Sandbox Code Playgroud)

support.domain.com 配置

<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>
Run Code Online (Sandbox Code Playgroud)

当我尝试访问 support.domain.com 时,它指向 domain.com 并且在 https 中不会加载我们的支持站点,它在 http 中工作正常。

Mik*_*ler 5

是的,这是 apache 配置的一个非常强大的部分。

例如,假设您正在为域www.domain.tld提供服务,并且您希望添加指向相同 IP 地址的虚拟主机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>
Run Code Online (Sandbox Code Playgroud)

在此处查看完整文档:http : //httpd.apache.org/docs/2.2/vhosts/

最终答案:将NameVirtualHost *:443指令添加到您的默认配置中。