Apache2 不读取 site-enabled/*.conf

Apache2 不读取 site-enabled/*.conf

所以我尝试在 Ubuntu 14.04 上使用 Apache 设置我的网站。

我已经创建了一个mydomain.com.conf文件sites-available/。看起来像这样;

mydomain.com.conf

<VirtualHost *:80>
    ServerName mydomain.com
    ServerAlias www.mydomain.com
    ServerAdmin [email protected]

    DocumentRoot /var/www/mydomain.com/public_html

    ErrorLog ${APACHE_LOG_DIR}/mydomain.com/error.log
    CustomLog ${APACHE_LOG_DIR}/mydomain.com/access.log combined
</VirtualHost>

000-默认.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    #DocumentRoot /var/www

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

由于某种原因 apache 似乎mydomain.com.conf根本不读取,它总是默认为000-default.conf.

访问我的网站时,我收到 403 Forbidden 响应。

  1. 我已启用该站点a2ensite mydomain.com并重新加载 Apache。
  2. apachectl configtest回报Syntax OK

error.log文件为000-default.conf

[Wed Sep 03 11:01:48.717652 2014] [autoindex:error] [pid 5869] [client 2.71.93.10:55718] AH01276: Cannot serve directory /var/www/: No matching DirectoryIndex (index.php,index.html,index.cgi,index.pl,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive

而错误日志和访问日志为mydomain.com空。

我的apache2.conf做了一个IncludeOptional sites-enabled/*.conf.

中的安全模型apache2.conf如下所示;

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /var/www/>
        DirectoryIndex index.php, index.html
        AllowOverride None
        Require all granted
</Directory>

怎么了?

答案1

您的网站要么是空的,没有任何文件,要么没有他提到的任何文件Directory Index

另一种可能性是权限。您网站的文件或目录可能没有apache's user访问权限。

答案2

我也有一条 Apache2 日志消息,其中包括短语

Cannot serve directory /var/www/

这很奇怪,因为/var/www我的配置中没有提到任何地方。

但当我做了一些我认为完全独立的警告消息时,该消息停止了:

Warning: DocumentRoot [/www/www.foo.bar/docs] does not exist

我推测,当 DocumentRoot 目录尚未完全准备好使用时,/var/www会(默默地)使用默认值,这会导致混乱。

答案3

我的apache2.conf做了一个IncludeOptional sites-enabled/*.conf

就我而言,改变这个来Include sites-enabled/*.conf解决问题。


此解决方案的一些上下文:
这是在 docker 构建上(FROM php:7.2-apache截至 2018 年 12 月 21 日),其中虚拟主机文件之前已加载且未进行任何修改,因此当它突然没有加载时,让我们感到非常头痛。如果您需要在进行此更改后重新加载 apache,而不终止容器运行/etc/init.d/apache2 reload(取自这个答案上)。

答案4

停用000-default然后a2dissite重新启动 apache。

相关内容