Apache2安装后出现403 Forbidden 的原因

最新的apache2.2提供和不少新模块的支持,也在性能和安全上有改进,也就造成一些新的机制和概念需要我们不断去摸索和熟悉,前一阵就遇到了安装好apache2并配置好httpd.conf后,无论访问什么路径都出现 403 forbidden的提示,折腾了半天才从官方的maillist文档里面找到答案。

出现这样的问题一般有两种可能性。

一种可能性是DocumentRoot选项的设置,如果在安装好apache2后修改了该选项,并且忘记了配置该新目录的访问权限就会出现这样的情况。比如apache2安装好后默认的参数如下

DocumentRoot /usr/local/www/data

<directory "/usr/local/www/data">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</directory>

我们常常会重新指定web文件存放的目录,比如设定
DocumentRoot /var/www
这时往往会忽略了对后面的Directory 项的修改,必须将里面的路径同时修改为 /var/www才行,否则将会访问所有目录都出现 403 forbidden错误。

另外一种可能性出现在我们配置了不同的VirtualHost,并且有某个VirtualHost的DocumentRoot不在全局的DocumentRoot目录下,这时必须在全局种单独增加对该目录的Directory 项进行设置,否则该VirtualHost下的所有访问均会出现403 forbidden错误。

这个问题是因为Apache2对于权限和安全的更高要求,对分布在不同磁盘上的目录文件进行严格管理,我们进行web规划的时候必须注意这一点。


You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

AddThis Social Bookmark Button

12 Responses to “Apache2安装后出现403 Forbidden 的原因”

  1. 我也遇到过类似情况,弄了半天没有搞定,这下明白了。

  2. U really helped me out! Thanx!

  3. 能有帮助我也很高兴:)欢迎常交流!

  4. You help me a lot. Thanks.

  5. i love you.

  6. 试试下面的步骤。
    第一:看看是不是Directory配置错了,好像一般不会是这个原因
    第二:看看User Group指定的用户有没有权限访问那个目录,否则用chown修改目录的所有者
    第三:看看是不是seLinux搞得鬼,一般没事把selinux停了再重启linux,selinux的配置文件在/etc/selinux/config,改成disable
    第四:我把所有的都做了发现还是不行,那么可能是apache是用root安装的,把apache卸了用一个非root用户重新安装。
    我这几天试的就是这些问题,最后解决了

  7. 做人厚道 看贴回帖
    多谢帮助!!!!!!!

  8. 伟大。。。

  9. 码头红色0503 Says:

    解决中

  10. thanks! Helps a lot^^

  11. 今天也遇到了这样的情况,难得看到这么全的,多谢!

  12. 非常感谢,我在这问题困了一晚上 终于解决了 就是selinux设置的问题
    谢谢

Leave a Reply

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word