升级到apache2.4后出现403错误
从Ubuntu 13.04服务器升级后,www页面将不会自动显示。
错误403禁止您无权访问此服务器上的/。
我已经将访问控制保存从apache2.2更改为apache2.4,但这不起作用。 我还能做什么?
发生的事情是apache2.4中配置文件的语法已经改变。
资料来源:在我升级到13.10之后,这也发生在我身上
conf.d文件
/etc/apache2/conf.d
所有文件都应该移动到/etc/apache2/conf-available
。
它们现在的工作方式与sites
和mods
工作方式相同。 只需将conf文件放在conf-available
文件夹中,然后使用a2enconf
启用所需a2enconf
。
例:
我有一个文件conf.d/httpd.conf
,它有ServerName指令。
为了完成这项工作,我不得不将其移至conf-available
目录并手动启用它。
sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf sudo a2enconf httpd
网站文件
以前, /etc/apache2/sites-available
中的文件没有扩展名。 例如/etc/apache2/sites-available/default
。 现在需要.conf
扩展名。
例:
如果你有/etc/apache2/sites-available/some-site
,在13.04你可以使用sudo a2ensite some-site
启用它。 现在它会给你一个错误的说法
错误:站点某站点不存在!
要解决此问题,请在sites-available
所有配置文件中附加.conf
。 您可以在sites-enabled
执行相同操作,也可以删除所有文件并手动重新启用它们。
我建议手动执行它们,因为您可能需要修复每个VHost(下一步)。
sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;
如果您决定手动执行此操作:
sudo rm /etc/apache2/sites-enabled/* sudo a2ensite your-site-name
虚拟主机指令:
允许/拒绝vs要求
如果您有以下内容:
order allow,deny allow from all
它应该成为:
Require all granted
有关详细信息,请查看DaveRandom对Stack Overflow上的答案的评论 。
简单地说,如果你升级到apache2.4并保留了apache2.2的旧httpd.conf
,那么allow指令应该保持正常工作。 如果您升级了httpd.conf
(我建议),那么在将Order
/ Allow
/ Deny
指令更改为等效的Require
之前,您将收到403错误。
目录选项
如果你有目录选项,请注意它们都必须加上+
或-
或者根本没有。 不允许混合使用两者:
例:
这是允许的:
Options +Indexes +FollowSymLinks -MultiViews
这是这样的(请注意,这些示例不会同时执行相同操作,前一个禁用MultiViews
选项,下一个禁用):
Options Indexes FollowSymLinks MultiViews
不再允许这样做:
Options Indexes FollowSymLinks -MultiViews
上次配置选项会抛出一个语法错误:
要么所有选项都必须以+或 – 开头,要么不选择任何选项。
重启apache
完成所有操作后,您需要重新启动Apache服务器才能使更改生效:
sudo apache2ctl restart
您可以在官方文档中找到2.2到2.4的详细升级指南 。
我假设网站正在您的Ubuntu服务器上运行。
检查httpd.conf以确保DocumentRoot设置指向正确的位置。
检查DocumentRoot引用的文件夹的文件权限可以由Web服务器运行的用户读取。
检查您是否有适当的index.html / index.htm等,并且Web服务器没有尝试进行目录列表。
我正在从非标准目录提供文件,以便进行升级工作,我必须编辑/etc/apache2/apache2.conf并添加:选项索引FollowSymLinks AllowOverride无需要全部授予
在此之后,以及上面的建议更改,403错误消失了。