所以我尝试在 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 响应。
- 我已启用该站点
a2ensite mydomain.com
并重新加载 Apache。 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。