我目前正在使用apache中基于名称的虚拟主机配置/conf/extra/httpd-vhosts.conf
来为来自同一IP地址的几个不同网站提供服务,就像在apache文档中一样。
<VirtualHost *:80>
ServerName domain1.example.com
DocumentRoot /www/domain1
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.example.com
DocumentRoot /www/domain2
</VirtualHost>
如果我尝试打开一个网站,该网站是由/conf/httpd.conf
配置的,由指令ServerName
定义,基本上是Linux服务器的FQDN,我将在{{1}中定义第一页{1}} - apache表示DNS名称与定义的任何/conf/extra/httpd-vhosts.conf
都不匹配,因此我从ServerName
获得第一个。
如果我将/conf/extra/httpd-vhosts.conf
中的指令Listen
更改为其他端口(来自/conf/httpd.conf
中定义的端口;我正在使用标准端口80)然后尝试点击{{1 (/conf/extra/httpd-vhosts.conf
中定义的端口 - 我使用8000进行测试),我收到http://ServerName:Port
(Listen
)中配置的网站内容,这就是我想要的。< / p>
我尝试更改/conf/httpd.conf
中定义的端口,使其与ServerRoot
中临时配置的端口匹配,例如:
/conf/extra/httpd-vhosts.conf
现在,当我点击/conf/httpd.conf
(端口= 8000)时,apache再次从<VirtualHost *:8000>
ServerName domain1.example.com
DocumentRoot /www/domain1
</VirtualHost>
<VirtualHost *:8000>
ServerName domain2.example.com
DocumentRoot /www/domain2
</VirtualHost>
给我第一个网站 - domain1.example.com
我尝试使用服务器IP,IP:端口更新指令http://ServerName:Port
(在/conf/extra/httpd-vhosts.conf
中),但它也不起作用。
我的服务器有DNS A记录,Listen
中的网站在DNS中配置为服务器A记录的ALIAS记录。
修改
添加/conf/httpd.conf
的输出:
/conf/extra/httpd-vhosts.conf
EDIT2:
添加apachectl -S
的输出:
VirtualHost configuration:
*:80 is a NameVirtualHost
default server domain1.example.com (/appl/apache24/conf/extra/httpd-vhosts.conf:24)
port 80 namevhost domain1.example.com (/appl/apache24/conf/extra/httpd-vhosts.conf:24)
alias domain1.example.com
port 80 namevhost domain2.example.com (/appl/apache24/conf/extra/httpd-vhosts.conf:38)
alias domain2.example.com
ServerRoot: "/appl/apache24"
Main DocumentRoot: "/appl/apache24/htdocs"
Main ErrorLog: "|/appl/apache24/bin/rotatelogs /appl/apache24/logs/admin-error_log.%Y%m%d 86400"
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/appl/apache24/logs/" mechanism=default
Mutex ssl-stapling-refresh: using_defaults
PidFile: "/appl/apache24/logs/httpd.pid"