EC2 ubuntu 上的多个虚拟主机-无法访问第二个主机,始终访问默认主机

EC2 ubuntu 上的多个虚拟主机-无法访问第二个主机,始终访问默认主机

我已经搜索和重新配置了 6 天,并且掉了好几缕头发。

问题:

我想在我的 ubuntu 服务器上有 2 个以上的虚拟主机(1 个 ip)但是 - 只显示第一个“按字母顺序”列出的启用站点。000-default
www.domain1.com
www.domain2.com

单独来看,它们都有效(如果我对每个都使用 a2dissite,则留下 1)

配置: - UBUNTU 10.10 服务器 - EC2 实例(不要因为这部分而找我麻烦 - 希望这不是问题!) - APACHE 2.2.16 - DNS my.domain.com - 到我的公共 ec2 dns(这有效)

虚拟主机:#默认

<VirtualHost *:80>
        DocumentRoot "/home/www/"
        <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Satisfy all
        </Directory>
        <Directory /home/www>
        Options Indexes Multiviews FollowSymLinks
        AllowOverride all
        Order allow,deny
        Allow from all
        </Directory>
        LogLevel debug
        ErrorLog /home/www/logs/error.log
        CustomLog /home/www/logs/access.log "combined"
</VirtualHost>

虚拟主机 1 - domain1

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName domain1.com
        ServerAlias domain1.com www.domain1.com
        # Indexes + Directory Root.
        DirectoryIndex index.php
        DocumentRoot "/home/www/www.domain1.com/"
        # Directory directive
        <Directory "/home/www/www.domain1.com">
                Options Indexes Multiviews FollowSymLinks
                AllowOverride none
                Order allow,deny
                Allow from all
        </Directory>
        # CGI Directory
        ScriptAlias /cgi-bin/ /home/www/www.domain1.com/cgi-bin
        <Location /cgi-bin>
                Options +ExecCGI
        </Location>
        # Logfiles
        LogLevel debug
        ErrorLog "/home/www/www.domain1.com/logs/error.log"
        CustomLog "/home/www/www.domain1.com/logs/access.log" combined
</VirtualHost>

我在另一个具有不同域名的文档根目录中也有上述内容

符号链接已到位。apache2ctl -St显示以下内容 -

VirtualHost configuration:
*:80       is a NameVirtualHost
         default server  (/etc/apache2/sites-enabled/000-default:4)
         port 80 namevhost  (/etc/apache2/sites-enabled/000-default:4)
         port 80 namevhost domain1.com (/etc/apache2/sites-enabled/www.domain1.com:4)
         port 80 namevhost www.domain2.com (/etc/apache2/sites-enabled/www.domain2.com:4)
Syntax OK

我的端口.conf:

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    NameVirtualHost *.443
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

我的 apache2.conf 与默认值没有任何变化,并且 httpd.conf 是空的。

我尝试了以下方法(以及大约一百种其他方法):

似乎我已经尝试了其他人遇到的所有问题,但似乎没有什么能解决我的问题。

可能性:

  1. EC2
  2. 文件权限 - 我将所有内容更改为 apache2 用户“www-data” - 没有成功。
  3. 我是个傻瓜...希望你们中有人能指出我的问题。:)

答案1

说到虚拟主机,我们的一个项目也遇到了同样的问题。Apache 的“ServerName”指令不是可选的,而是必须使用的。当没有匹配的 ServerName 时,Apache 没有“默认”虚拟主机可以加载。如果虚拟主机服务器名重叠,那么这只会给您带来问题。最后,在这种情况下,Apache 只会根据其配置文件的加载顺序决定要做什么。如果您尝试通过未指定的地址(IP 地址或虚拟主机上未映射的地址)联系服务器,它将加载第一个为该地址加载配置的虚拟主机。正确的做法是让虚拟主机在 ServerName 和 ServerAlias 指令中详细说明所有可能的服务器名。请参阅Apache 上基于名称的虚拟主机,并仔细考虑有证据的注释“主要宿主消失”。

答案2

您的 ports.conf 是否可能由于使用句点代替冒号而失败?

<IfModule mod_ssl.c>
    NameVirtualHost *.443
    Listen 443
</IfModule>

注意上面的**.443* 应该是**:443*。

答案3

只是猜测。查看 apache2ctl -St 的结果,你会发现输出有所不同:

port 80 namevhost domain1.com 
port 80 namevhost www.domain2.com

也许您还应该将 domain2.com 设置为 ServerName(不带“www”前缀)

相关内容