VirtualHost根据域名不正确导向

我们最近从基于名称的托pipe转移到单个IP来实现SSL。 因此,每个网站现在都有自己的IP。 当www.domain1.com和www.domain2.com被引导到服务器上正确的目录时,dev.domain1.com和dev.domain2.com等子域不是。 子域也有自己的IP。 以下是其中一个子域的.conf文件的结构:

<VirtualHost 1.2.3.4:80> ServerAdmin [email protected] DocumentRoot /var/www/domain1-dev ServerName dev.domain1.com ServerAlias dev.domain2.com ErrorLog logs/dev.domain1.com-error.log CustomLog logs/dev.domain1.com-access.log common <Directory /var/www/domain1-dev> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> 

ServerName当前被注释掉,UseCanonicalName被设置为在主httpd.conf文件中closures。 在这个httpd.conf文件中,DocumentRoot被设置为domain1的path,就像指令一样。 NameVirtualHost被注释掉,因为我们现在在基于IP的托pipe。

任何想法可能是错的? :-(就好像subdomain .conf文件没有被读取,或者主要的域名设置被用来代替。实际上,我的任何子域名都显示了主域名的网站,即使它没有被定义在。 conf文件。

非常感谢。

编辑

下面是运行/ usr / sbin / httpd -S时得到的结果:

 # /usr/sbin/httpd -S httpd: apr_sockaddr_info_get() failed for the.servername.com httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName VirtualHost configuration: 1.2.3.5:80 www.domain2.com (/etc/httpd/conf.d/domain2.conf:10) 1.2.3.5:443 www.domain2.com (/etc/httpd/conf.d/ssl.conf:87) 1.2.3.3:80 www.domain1.com (/etc/httpd/conf.d/domain1.conf:1) 1.2.3.3:443 www.domain1.com (/etc/httpd/conf.d/ssl.conf:45) 1.2.3.6:80 dev.domain1.com (/etc/httpd/conf.d/domain1-dev.conf:1) Syntax OK 

编辑

以下是每个域的语法:

 <VirtualHost 1.2.3.3:80> ServerAdmin [email protected] DocumentRoot /var/www/html ServerName www.domain1.com ServerAlias domain1.com ErrorLog logs/www.domain1.com-error.log CustomLog logs/www..domain1.com-access.log common </VirtualHost> 

在这里我没有看到VirtualHostconfiguration的问题,但是很可能,即使是那个apache也会select错误的,只是为了给你提供一些帮助你解决问题的见解

  • Apache将总是按顺序读取VirtualHosts
  • 它将根据您的需要select哪一种更适合您的需求
  • 如果您有任何ServerAlias * .domain任何分配给您的域的东西死了之后,总是把glob别名放在最后

希望这可以帮助你一点点!

运行

 $PATH_TO_APACHE_DIR/bin/httpd -t -D DUMP_VHOSTS or $PATH_TO_APACHE_DIR/bin/httpd -S 

看看什么虚拟主机被识别和在什么文件可能有帮助。 运行“httpd -h”以查看其他选项的列表以显示设置。

对于多个IP地址上的基于工作名称的主机,请使用

 NameVirtualHost IP:80 

在你的输出httpd -S没有“NameVirtualHosts”。