我已经配置了 Apache 2.2,这样就可以有 2 个主机。问题是当我使用第二台主机连接时,会加载默认主机。
这是 vhosts.conf 文件:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/proyectos/mutual/contratos/web
ServerName contratos.mutual.dev
ErrorLog /etc/httpd/logs/mutual-contratos-error_log
<Directory "/var/www/proyectos/mutual/contratos/web">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/proyectos/spensiones/html
ServerName biotempo.spensiones.dev
ErrorLog /etc/httpd/logs/biotempo.spensiones.dev-error_log
<Directory "/var/www/proyectos/spensiones/html">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
这是“httpd -S”命令输出:
[root@orahost conf.d]# httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
_default_:443 localhost.localdomain (/etc/httpd/conf.d/ssl.conf:81)
*:80 is a NameVirtualHost
default server contratos.mutual.dev (/etc/httpd/conf.d/vhosts.conf:3)
port 80 namevhost contratos.mutual.dev (/etc/httpd/conf.d/vhosts.conf:3)
port 80 namevhost biotempo.spensiones.dev (/etc/httpd/conf.d/vhosts.conf:16)
Syntax OK
[root@orahost conf.d]#
为了测试,我尝试从远程计算机加载 biotempo.spensiones.dev,但显示的是默认服务器。
请问有什么帮助吗?
答案1
您可以尝试以下方法。我已经通过在 httpd.conf 中使用以下内容解决了该问题。
NameVirtualHost Server_IP_Address:80
<VirtualHost Server_IP_Address:80>
........
</VirtualHost>
如果您仍然遇到问题,请告知我们。
编辑:注意
星号 * 匹配所有地址,因此主服务器不处理任何请求。由于 ServerName 为 contratos.mutual.dev 的虚拟主机在配置文件中位于首位,因此它具有最高优先级,可视为默认或主服务器。这意味着,如果收到的请求与指定的 ServerName 指令之一不匹配,则将由该首位服务器处理。
上述配置几乎适用于所有基于名称的虚拟主机情况。事实上,这种配置唯一不适用的情况是,当您根据不同的 IP 地址或端口提供不同的内容时。
您可以将 * 替换为系统上的特定 IP 地址。此类虚拟主机仅用于连接到指定 IP 地址时收到的 HTTP 请求。但是,在 IP 地址不可预测的系统上使用 * 也很有用 - 例如,如果您的 ISP 有一个动态 IP 地址,并且您正在使用某种动态 DNS 解决方案。由于 * 匹配任何 IP 地址,因此当您的 IP 地址发生变化时,此配置无需更改即可工作。