从未使用过的 Apache 虚拟主机目录
Apache vhost directory never used
我在 Debian 9 上设置了一个新服务器,但这次我遇到了虚拟主机问题。
基本上,虚拟主机永远不会到达它们的 DocumentRoot,而是退回到默认的 DocumentRoot (/var/www/html
)。因为这通常是找到正确配置的简单问题,所以这次我没有让它工作。
我将 conf 文件减少到最低限度以解决该问题。让我们以 2 个虚拟主机 conf 示例为例:
<VirtualHost 127.0.0.1:80>
ServerName www.site1.com
ServerAlias www.site1.com
ServerAdmin contact@test.com
DocumentRoot /var/www/site1
</VirtualHost>
<VirtualHost 127.0.0.1:80>
ServerName www.site2.com
ServerAlias www.site2.com
ServerAdmin contact@test.com
DocumentRoot /var/www/site2
</VirtualHost>
在这种情况下,继续 www.site1.com
或 www.site2.com
将进入 /var/www/html
的默认页面。
如果我将 120.0.0.1:80
之一更改为 *:80
,它会立即设置为工作虚拟主机。但是,如果我将两者都设置为 *:80
,它将落在列表中的第一个。
意思是如果我有这个:
<VirtualHost 127.0.0.1:80>
ServerName www.site1.com
ServerAlias www.site1.com
ServerAdmin contact@test.com
DocumentRoot /var/www/site1
</VirtualHost>
<VirtualHost *:80>
ServerName www.site2.com
ServerAlias www.site2.com
ServerAdmin contact@test.com
DocumentRoot /var/www/site2
</VirtualHost>
www.site1.com
和 www.site2.com
将导致 /var/www/site2
。反之亦然。
但如果我这样做 :
<VirtualHost *:80>
ServerName www.site1.com
ServerAlias www.site1.com
ServerAdmin contact@test.com
DocumentRoot /var/www/site1
</VirtualHost>
<VirtualHost *:80>
ServerName www.site2.com
ServerAlias www.site2.com
ServerAdmin contact@test.com
DocumentRoot /var/www/site2
</VirtualHost>
然后www.site1.com
和www.site2.com
会落在www.site1.com
上。
我检查了我的 apache.conf
、ports.conf
三重。它们都是全新安装后的默认设置。
"solved" 类似帖子上的所有常见答案均已尝试并检查:
apachectl -t
returns一个Syntax OK
。
所有 conf 文件都以 .conf
结尾。
chmod 已设置为各种尝试,包括 755、775 和 777。
匹配的用户也在目录中设置。
我尝试对所有内容进行 sudo,重新启动,重新加载等。
我确实重新启动了服务器。
我已将日志设置为调试,但我找不到其中的所有错误(尽管我不确定要查找的内容)。
以防万一,这是我的 /etc/hosts
:
127.0.0.1 localhost
127.0.1.1 sd-*****.dedibox.fr sd-****
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
和主机名:
sd-*****
真不知道现在怎么样了。感谢您的任何提示。
好吧,出于一些奇怪的原因,我设法让它与第二个方案一起工作,将每个虚拟主机作为 *:80
。
虽然它有效,但我不知道为什么这次我通常的设置不起作用,也不知道我做了什么让它起作用…
我在 Debian 9 上设置了一个新服务器,但这次我遇到了虚拟主机问题。
基本上,虚拟主机永远不会到达它们的 DocumentRoot,而是退回到默认的 DocumentRoot (/var/www/html
)。因为这通常是找到正确配置的简单问题,所以这次我没有让它工作。
我将 conf 文件减少到最低限度以解决该问题。让我们以 2 个虚拟主机 conf 示例为例:
<VirtualHost 127.0.0.1:80>
ServerName www.site1.com
ServerAlias www.site1.com
ServerAdmin contact@test.com
DocumentRoot /var/www/site1
</VirtualHost>
<VirtualHost 127.0.0.1:80>
ServerName www.site2.com
ServerAlias www.site2.com
ServerAdmin contact@test.com
DocumentRoot /var/www/site2
</VirtualHost>
在这种情况下,继续 www.site1.com
或 www.site2.com
将进入 /var/www/html
的默认页面。
如果我将 120.0.0.1:80
之一更改为 *:80
,它会立即设置为工作虚拟主机。但是,如果我将两者都设置为 *:80
,它将落在列表中的第一个。
意思是如果我有这个:
<VirtualHost 127.0.0.1:80>
ServerName www.site1.com
ServerAlias www.site1.com
ServerAdmin contact@test.com
DocumentRoot /var/www/site1
</VirtualHost>
<VirtualHost *:80>
ServerName www.site2.com
ServerAlias www.site2.com
ServerAdmin contact@test.com
DocumentRoot /var/www/site2
</VirtualHost>
www.site1.com
和 www.site2.com
将导致 /var/www/site2
。反之亦然。
但如果我这样做 :
<VirtualHost *:80>
ServerName www.site1.com
ServerAlias www.site1.com
ServerAdmin contact@test.com
DocumentRoot /var/www/site1
</VirtualHost>
<VirtualHost *:80>
ServerName www.site2.com
ServerAlias www.site2.com
ServerAdmin contact@test.com
DocumentRoot /var/www/site2
</VirtualHost>
然后www.site1.com
和www.site2.com
会落在www.site1.com
上。
我检查了我的 apache.conf
、ports.conf
三重。它们都是全新安装后的默认设置。
"solved" 类似帖子上的所有常见答案均已尝试并检查:
apachectl -t
returns一个Syntax OK
。
所有 conf 文件都以 .conf
结尾。
chmod 已设置为各种尝试,包括 755、775 和 777。
匹配的用户也在目录中设置。
我尝试对所有内容进行 sudo,重新启动,重新加载等。
我确实重新启动了服务器。
我已将日志设置为调试,但我找不到其中的所有错误(尽管我不确定要查找的内容)。
以防万一,这是我的 /etc/hosts
:
127.0.0.1 localhost
127.0.1.1 sd-*****.dedibox.fr sd-****
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
和主机名:
sd-*****
真不知道现在怎么样了。感谢您的任何提示。
好吧,出于一些奇怪的原因,我设法让它与第二个方案一起工作,将每个虚拟主机作为 *:80
。
虽然它有效,但我不知道为什么这次我通常的设置不起作用,也不知道我做了什么让它起作用…