2015-12-04 15 views
1

我有apache2和虚拟主机的问题。我运行了多个站点的服务器。我有子站点设置指向我的服务器IP。我的客户,那些选择拥有自己的域名的客户将他们的域名/子域名指向我的子域名之一。我已经完成了多个网站,除了现在,它一直在运行,我不知道为什么。 这是似乎无法工作的虚拟主机,当我尝试访问它时,它总是指向我的默认站点。多个apache2虚拟主机坐 - 除一个以外的所有工作

域重定向是这样的。 customer.domain.com - > customer.mydomain.com - >服务器IP

<VirtualHost customer.domain.com:443> 
    ServerName customer.domain.com 
    ServerAlias *customer.domain.com *customer.mydomain.com 
    DocumentRoot /var/www/page 

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

    <Directory /var/www/page> 
    Options -Indexes +FollowSymLinks +MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    </Directory> 
    ErrorLog /var/log/apache2/customer/logs/error.log 

    LogLevel warn 

    CustomLog /var/log/apache2/customer/logs/access.log combined 

    SSLEngine on 
    SSLCertificateFile  /etc/ssl/certs/ssl-cert-snakeoil.pem 
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key 


    BrowserMatch ".*MSIE.*" \ 
    nokeepalive ssl-unclean-shutdown \ 
    downgrade-1.0 force-response-1.0 
</VirtualHost> 

此格式用于所有其他网站,他们引导到正确的文件夹和网站。但是对于这个特定的网站,它总是被定向到默认网站。

我注意到,当我运行apache2ctl -S我得到两个IP。一个是我的服务器IP与所有的虚拟主机,第二个IP似乎连接到新的虚拟主机,这是不工作的。

52.52.52.52:443  customer.domain.com (/etc/apache2/sites-enabled/006-customer.domain.com.conf:1) 
12.12.12.12:443  is a NameVirtualHost 
     default server default.mydomain.com (/etc/apache2/sites-enabled/001-default.mydomain.com.conf:1) 
     port 443 namevhost default.mydomain.com (/etc/apache2/sites-enabled/001-default.mydomain.com.conf:1) 
       alias www.default.mydomain.com 
     port 443 namevhost customer2.domain.com (/etc/apache2/sites-enabled/002-customer2.domain.com.conf:1) 
       alias www.customer2.domain.com 
       wild alias *subdomain.mydomain.com 
*:80     default.mydomain.com (/etc/apache2/sites-enabled/000-default.conf:1) ..... more 

我不太确定要查找什么,日志似乎没有告诉我任何有用的东西。

关于我可能做错什么的想法?谢谢。

+0

更新:我注意到,当我尝试访问通过“https://”customer.domain.com网站我得到ERR_CONNECTION_RESET,此网站不可用。没有https,我直接进入默认站点。 –

+0

可能是由于Listen指令不良或虚拟主机*:443? – covener

+0

@covener你能否详细说明一下。谢谢。 –

回答

0

您应该不惜一切代价避免将主机名放在<虚拟主机>之内。在典型的系统中,每个虚拟主机中的*:端口就足够了。

如果您确实在意连接与本地接口相关的接口,则在检查使用的主机名之前,应放置本地接口地址名称而不是主机名。但是大多数人根本不在乎使用什么接口。

使用主机名的特殊风险是它可能无法解析到任何本地接口,在这种情况下,Apache不会将连接映射到它。匹配的每个请求主机名仅匹配最匹配的连接级别信息。