非标准端口上的 Apache 虚拟主机配置 - 仅提供第一个虚拟主机

Apache vhost config on non-standard port - only the first vhost is ever served

我正在尝试在非标准端口 (8787) 上通过 Apache(ubuntu 14.04 LTS 上的 v2.4.7)为 2 个站点提供服务。这是为了适应代理设置(我让 nginx 在同一台专用服务器上的端口 80 上为其他站点提供服务)。我非常有信心代理配置没问题,但 vhosts 似乎没有在 Apache 级别得到尊重(即当我直接点击端口 8787 时,nginx 没有触及)。我的设置看起来非常简单,如下所示:

<VirtualHost *:8787>
    ServerName site1.com
    ServerAlias www.site1.com;
    DocumentRoot "/var/www/site1.com"

    <Directory "/var/www/site1.com">
      AllowOverride All 
    </Directory>  
</VirtualHost>

还有...

<VirtualHost *:8787>
  ServerName site2.com;
  ServerAlias www.site2.com;
  DocumentRoot "/var/www/site2.com"

  <Directory "/var/www/site2.com">
    AllowOverride All 
  </Directory>  
</VirtualHost>

我还有一个 "Listen 8787" 行替换了我的顶级 /etc/apache2/ports.conf 文件中的 "Listen 80" 行。这是我所做的自定义配置的总和。两个站点都启用了 a2ensite,并且禁用了 000-default vhost。我通过查看 /etc/apache2/sites-enabled 中的符号链接仔细检查了这是否有效。我已经多次重启 Apache(使用 sudo)并多次重启整个机器。无论如何,当我点击 http://site2.com:8787 (and also http://site1.com:8787) 时,我得到了 site1。

我环顾四周,试图找出可能导致这种情况的具体原因,但我完全没有想法。如果有人处理过此问题,请告诉我,我会立即跟进修复状态。

更新:我解决了这个问题。它实际上是我不小心插入的 vhost conf 某些行上的尾随分号(我想我一直在编辑太多的 Nginx conf 文件)。我想也许它们被 Apache

视为主机名的一部分