我遇到了一个非常烦人的问题,我新创建的 Apache Vhost 导致配置错误。我最初使用 cp 命令复制现有且有效的 vhost,然后更改了 DocumentRoot。Apache 无法重新加载和重新启动。
运行 apache2 -t 会导致以下错误:
apache2: Syntax error on line 220 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/sites-enabled/test.example.com.conf: /etc/apache2/sites-enabled/test.example.com.conf:1: <VirtualHost> was not closed.
下面是我的虚拟主机的基本内容(我正在运行这个精确的代码):
<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /var/www/test
ServerName ddns.example.com
ServerAlias www.test.example.com
</VirtualHost>
如果我禁用此 vhost,Apache 可以正常启动,并且 apache2 -t 命令不会显示任何配置错误。我已经手动重新输入了 vhost 的开始/结束标记并检查了空格。测试目录确实存在并且拥有 www-root:www-root 所有权。是什么导致了这个看似错误的错误?
答案1
包含的 Apache 配置文件(如虚拟主机配置文件)按顺序读取。尽管错误指向此文件及其实际出现的第 1 行,但问题是</VirtualHost>
前一个文件末尾缺少。这是按字母顺序排列的前一个文件。除非出现意外语句,否则这不是错误<VirtualHost>
。