所以我有一个网站运行在Ubuntu上的一个台灯堆上。
我有两个虚拟主机文件..。
000-拖欠债务f:
ServerName www.example.co.uk
ServerAdmin admin@example.co.uk
DocumentRoot /var/www/html/
ErrorLog ${APACHE_LOG_DIR}/site-a_error.log
CustomLog ${APACHE_LOG_DIR}/site-a_access.log combined和moodle.example.co.uk.conf:
ServerName moodle.example.co.uk
ServerAdmin admin@example.co.uk
DocumentRoot /var/www/moodle.example.co.uk/public_html
ErrorLog ${APACHE_LOG_DIR}/site-b_error.log
CustomLog ${APACHE_LOG_DIR}/site-b_access.log combined如果我去www.example.co.uk,我就会看到主页。完全和预期的一样。
但是,如果我转到moodle.example.co.uk,我仍然会看到主页,而不是存储在指定的DocumentRoot中的页面。
如果我向Moodle添加了一个ServerAlias指令,那么它可以正常工作。
为什么ServerName指令不起作用?
编辑:一个更新。如果我禁用所有虚拟主机,那么我的网站仍然服务。这似乎是非常奇怪的行为。
访问被登录到other_vhosts_access.log中,但是我找不到任何应该导致这种行为的东西。
如果没有定义vhost,站点应该只提供一个拒绝连接的错误吗?
发布于 2018-04-28 17:27:58
来自Apache2.4文档(可能有帮助):
当请求到达时,服务器将根据请求使用的IP地址和端口找到最佳(最具体)匹配参数。如果有多个虚拟主机包含此最佳匹配地址和端口组合,Apache将进一步将ServerName和ServerAlias指令与请求中的服务器名称进行比较。如果从任何基于名称的虚拟主机中省略ServerName指令,服务器将默认为从系统主机名派生的完全限定域名(FQDN)。这种隐式设置的服务器名可能导致违反直觉的虚拟主机匹配,并且是不鼓励的。
以下是最有趣的:“如果省略基于any名称的虚拟主机中的<#>any指令,服务器将默认为从系统主机名派生的完全限定域名(FQDN)”
https://serverfault.com/questions/909817
复制相似问题