多个apache2虚拟主机 - 所有工作除了一个

时间:2015-12-04 13:50:19

标签: apache virtualhost

我遇到了apache2和虚拟主机的问题。我运行一个有多个站点的服务器。我有子域设置指向我的服务器IP。我的客户,那些选择拥有自己的域名的客户将其域/子域指向我的一个子域。我已经在多个网站上完成了这项工作并且它始终有效,除了现在,我无法弄清楚原因。 这是似乎无法正常工作的虚拟主机,当我尝试访问它时,它总是指向我的默认网站。

域重定向就像这样。 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 

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

关于我可能做错的任何想法?谢谢。

1 个答案:

答案 0 :(得分:0)

您应该避免将主机名放在&lt; virtualhost&gt;中不惜一切成本。在典型的系统上,*:每个vhost中的端口就足够了。

如果您确实关心连接与BEFORE检查所使用的主机名相关的本地接口,请输入本地接口地址名称而不是主机名。但大多数人根本不关心使用什么界面。

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