我的 VirtualHost 有什么问题?

Joh*_*ohn 4 virtualhost apache-2.2

我有以下虚拟主机

// filename: /etc/apache2/sites-available/ccbbbcc

<VirtualHost 1.1.1.1:80>
     ServerAdmin utopia@ccbbbcc.com
     ServerName ccbbbcc.com
     ServerAlias www.ccbbbcc.com
     DocumentRoot /srv/www/ccbbbcc/production/public_html/
     ErrorLog /srv/www/ccbbbcc/production/logs/error.log
     CustomLog /srv/www/ccbbbcc/production/logs/access.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

然后我也有

//filename: /etc/apache2/sites-available/default

<VirtualHost 1.1.1.1:80>
ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
blah blah blah
Run Code Online (Sandbox Code Playgroud)

为什么当我在浏览器中输入http://1.1.1.1 时,它会带我到http://ccbbbcc.com?即使我将新网址指向 IP 1.1.1.1,网页也会从http://ccbbbcc.com提供服务。为什么我无法从 /var/www 目录提供页面?

其他症状 - ccbbbcc vhost 仅覆盖了我的其他一些 vhost。不是全部。

补充说明

我确保使用 a2ensite 并重新启动 apache。

这是我的 /etc/apache2/ports.conf 的样子

NameVirtualHost 1.1.1.1:80
Listen 80
Listen 443
Run Code Online (Sandbox Code Playgroud)

我创建了一个名为 /srv/www/ccbbbcc/production/public_html/test.html 的文件,其中包含文本“Hello World”。当我输入http://ccbbbcc.com/test.html 时,页面加载正常。当我输入http://1.1.1.1/test.html 时,我得到一个 404 Page Not Found。当我输入http://1.1.1.1/ 时,Web 浏览器会刷新并显示 URL http://ccbbbcc.com。然后我将 test.html 附加到 url 的末尾,Hello World 再次出现。

那么这是否意味着某个地方发生了 http 重定向?如果是这样,我似乎无法确定是什么原因造成的。

另外,我注意到 ccbbbcc 覆盖了我的一些虚拟主机,而不是全部。似乎没有区分/覆盖 vhost 的模式。

我还注意到,如果我执行以下操作

1. a2dissite ccbbbcc
2. /etc/init.d/apache2 reload
3. a2ensite ccbbbcc
4. /etc/init.d/apache2 reload
Run Code Online (Sandbox Code Playgroud)

然后突然之间,http://ccbbbcc.com提供来自 /var/www/ 的页面,而http://1.1.1.1也提供来自 /var/www 的页面。a2ensite/a2dissite 是如何影响页面加载位置的?让 ccbbbcc 再次从 /srv/www/cbs/production 提供页面的唯一方法是重新启动我的整个 linux 服务器!这是怎么回事?

jos*_*chi 8

正如您在虚拟主机匹配的深入讨论中所读到的:

此列表中的第一个 vhost(具有指定 IP 地址的配置文件中的第一个 vhost)具有最高优先级,并捕获对未知服务器名称的任何请求或没有 Host: 标头字段的请求。

您的 Apache httpd/etc/apache2/sites-available/ccbbbcc/etc/apache2/sites-available/default.

重命名/etc/apache2/sites-available/default例如 to/etc/apache2/sites-available/00_default/etc/apache2/sites-available/ccbbbccto /etc/apache2/sites-available/01_ccbbbcc,以便首先加载默认文件。