我有一个 Elastic Beanstalk 服务器,用于我雇主的主站点 example.com,他们希望我在此托管他们的一个辅助站点:go.example.com。
因此,我刚刚创建了一个新的 ebextension 配置来创建第二个 vhost。我发现的问题是 Apache (HTTPD) 只想使用第一个 vhost 条目。
这是我的虚拟主机:
# I have Apache listening on port 8080 because I have varnish in front of my sites.
<VirtualHost *:8080>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule ^(.*)$ http://www.example.com%{REQUEST_URI} [R=301,L]
DocumentRoot "/var/app/current/httpdocs"
<Directory "/var/app/current">
AllowOverride All
Require all granted
</Directory>
<Directory "/var/app/current/cgi-bin">
AllowOverride All
Options None
Require all granted
</Directory>
<Directory "/var/app/current/httpdocs">
Options FollowSymLinks
AllowOverride All
DirectoryIndex index.html index.php
Require all granted
</Directory>
</VirtualHost>
#go.example.com
<VirtualHost *:8080>
ServerName go.example.com
ServerAlias staging.go.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/go.example.com/httpdocs
<Directory "/var/www/go.example.com">
AllowOverride All
Require all granted
</Directory>
<Directory "/var/www/go.example.com/httpdocs">
Options FollowSymLinks
AllowOverride All
DirectoryIndex index.html index.php
Require all granted
</Directory>
因此服务器将始终监听 example.com,并且通过上述 vhost 顺序,example.com 将提供服务,/var/app/current/httpdocs
而 go.example.com 只是一个空白页。
如果我交换 vhost 顺序,那么 go.example.com 是第一个,然后 example.com 提供服务/var/www/go.example.com/httpdocs
。而 go.example.com 仍然是一个空白页。
没有什么真正让我感到吃惊的事情,而且我在构建常规的 EC2 时没有遇到这个问题。
答案1
改变:
<VirtualHost *:8080>
到:
NameVirtualHost *
<VirtualHost *:8080>
答案2
看起来好像你遗漏了:
</VirtualHost>
在文件末尾粘贴以关闭该虚拟主机。同时确保您的 sites-enabled 中包含有关新虚拟主机的信息。