如何添加虚拟主机来处理(有效)CNAME 请求?

如何添加虚拟主机来处理(有效)CNAME 请求?

在 AWS EC2 机器上,在我的/etc/httpd/conf/httpd.conf文件中我有以下服务器配置:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.example.com
    DocumentRoot /var/www/html
    <Directory />
    Options FollowSymLinks
    AllowOverride All
    </Directory>
    <Directory /var/www/html/zf2-tutorial/public>
    DirectoryIndex index.php
    AllowOverride All
    Order allow,deny
    Allow from all
    </Directory>
</VirtualHost>

它在处理“www.example.com”流量方面做得非常出色,当我请求“www.example.com/Workstream”时,我得到了位于的应用程序/var/www/html/Workstream

因此,我对自己感觉很好,我决定要更花哨一些,并拥有 Web 服务器路由”工作流.example.com”流量/var/www/html/Workstream(以下Apache VirtualHost 文档例子)。

因此,我获得了相关 A 记录的 CNAME 别名——完成,工作正常,很棒。然后,我将目光投向 httpd.conf 文件,将其添加到<VirtualHost>现有文件的后面:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName workstream.example.com
    DocumentRoot /var/www/html/Workstream
    <Directory />
    Options FollowSymLinks
    AllowOverride All
    </Directory>
</VirtualHost>

我保存了编辑,然后重启了 apache(sudo /usr/sbin/apachectl restart——不知道为什么我的 apache 和其他人不一样),用浏览器打开“workstream.example.com”,然后...得到了 的内容/var/www/html。重启后返回了以下警告:

[警告]默认VirtualHost 在 80 端口上重叠,第一个优先

我是个 Linux 菜鸟,这很痛苦。我做错了什么?我编辑的 httpd.conf 是否正确(使用 find / -xdev 2>/dev/null -name "httpd.conf"我看到在 处还有另一个 httpd.conf /opt/railo/sys/httpd.conf)?ServerName 是否需要与我尚未设置的内容相对应?我的语法是否不正确?


其结果sudo /usr/sbin/apachectl -S是:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server www.example.com (/etc/httpd/conf/httpd.conf:1005)
         port 80 namevhost www.example.com (/etc/httpd/conf/httpd.conf:1005)
         port 80 namevhost workstream.example.com (/etc/httpd/conf/httpd.conf:1020)
Syntax OK

答案1

您有NameVirtualHost *:80(见“NameVirtualHost 指令“) 指令是否在您的配置中?如果没有,那么它将被视为基于 IP 的虚拟主机,从而忽略Host浏览器发送的标头。

答案2

指令NameVirtualHost *:80应该是您消除该错误所需要的。Apachectl 发现了它,所以我怀疑 Apache 没有正确重新加载。...不是那个家伙...但你试过了吗重启

...

...

另一种方法是杀死列出的所有 httpd pid ps -ef,然后启动?

答案3

如果所有请求都由一个虚拟主机缓存,则可能是您缺少默认虚拟主机http://httpd.apache.org/docs/2.2/vhosts/examples.html

<VirtualHost _default_:80>
   DocumentRoot /var/www/html
</VirtualHost>

相关内容