apache服务出现Forbidden 403问题的解决方法总结

在配置Linux的 Apache服务时,经常会遇到http403错误,我今天配置测试时也出现了,最后解决了,总结了一下。http 403错误是拒绝访问的意思,有很多原因的。还有,这些问题在win平台的Apache里一样会发生!我按照经验总结的主要有以下4种原因!

本人测试的环境 是:Scientific Linux 5.3(与RHEL和CentOS百分百兼容!),其它版本的Linux应该通用,没测试。

1. 访问的文档权限不够。要755以上权限。解决方法:用命令chmod 755 /var/www/ 或其他相应目录。
2. SELinux或防火墙的原因。解决方法:先关闭SELinux和让防火墙通过WWW服务。
3. 虚拟主机配置错误。例如我遇到过一次的:
httpd.conf里加载了虚拟主机的配置文件:

代码如下:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

而conf/extra/httpd-vhosts.conf并没有配置好,而且虚拟主机功能暂时还没有用,所以把Include conf/extra/httpd-vhosts.conf注释掉,重启apache后正常了。
解决方法:重新配置虚拟主机或暂时关闭。

4. DocumentRoot的设置。解决方法如下:

打开 apache的配置文件httpd.conf,找到这段代码:

代码如下:

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>

有时候由于配置了php后,这里的“Deny from all”已经拒绝了一切连接。把该行改成“allow from all”,修改后的代码如下,问题解决。

代码如下:

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>

PS:我以前没有写技术日志的习惯,以后多与大家分享。

以下是其它网友的补充:

部署apache服务Forbidden 403问题小结

很多朋友和学生都问过我同样的问题 访问网站Forbidden 403 什么原因?一般页面提示为:

Forbidden
You don't have permission to access / on this server.

http错误代码403:
403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。

通常情况可能(但不限于此)的原因有:

原因1:apache配置文件中没有对站点目录的权限许可,这通常是在初始安装apache后,更改了默认的apache站点目录时所至(重要,常发生):

如将站点目录更改为:/var/blog,则在apache配置文件中如果不加下面的配置 就会返回403错误。

<Directory "/var/blog">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

提示:生产环境上面的配置还需修改,见下文,此处仅就本文的主题讲解。

原因2:站点目录下无首页文件(index文件),而apache的配置又禁止了目录浏览,就会提示403错误,配置如下(偶尔发生):

a.站点目录下无首页文件(index文件):
[root@http-server blog]# pwd
/var/blog
[root@http-server blog]# ll
total 12
drwxr-xr-x 2 root root 4096 Jun 4 22:11 oldboy
-rw-r--r-- 1 root root 0 Jun 4 22:11 oldboy.html
提示:上面列出来的就是站点目录/var/blog目录下没有预设 首页DirectoryIndex index.html

b.apache的配置禁止目录浏览的三种配置
第一种配置:
<Directory "/var/blog">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

第二种配置:
<Directory "/var/blog">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

第三种配置:
<Directory "/var/blog">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>

提示:第二种原因朋友们偶尔会朋友,但遇到问题最多的还是第一种原因。
========================================================
以上配置的详细说明:

===========================

原因3:还是Directory权限问题(不常发生)

如下文:拒绝10.0.0.0/24整段访问。这样被拒绝的主机访问就会出现403错误
<Directory "/var/blog">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
#Allow from all
Deny from 10.0.0.0/24

<Directory "/var/blog">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
#Allow from all
Allow from 10.0.0.116
#Deny from 10.0.0.0/24
</Directory>

原因4:站点目录权限问题(不常发生)。

站点目录需要apache的用户有访问权限,否则就会报403错误。
[root@http-server var]# pwd
/var
[root@http-server var]# chown -R root.root blog/
[root@http-server var]# chmod 700 blog
[root@http-server var]# ll -d blog/
drwx------ 3 root root 4096 Jun 4 22:11 blog/

本文为抛砖引玉 更多原因,期待你的答案。。

(0)

相关推荐

  • Wampserver2.5配置虚拟主机出现403 Forbidden的处理方案

    一直在用APMServ5.2.6,mysql好办,可以用mariadb代替进行升级,但php升级到5.4.7就没办法再升级,安装加速器也困难.就想迁移到Wampserver上来,以前也尝试过Wampserver,但配置很麻烦. 这一次是不得不配置了,安装一切很顺利,默认站点也正常运行.但配置虚拟主机时问题来了,总是提示: Forbidden You don't have permission to access / on this server. Apache/2.4.9 (Win32) PHP

  • 权限问题导致Nginx 403 Forbidden错误的解决方法

    今天在一个新的环境上安装nginx,结果访问的都是403 通常显示403我立马都会想到路径配置不对,但我仔细看了一下,目录路径没问题: nginx.conf: 复制代码 代码如下: server {         listen       80;         server_name  localhost;           #charset koi8-r;           #access_log  logs/host.access.log  main;           locat

  • Nginx 403 forbidden的解决办法

    常见的,引起nginx 403 forbidden有二种原因,一是缺少索引文件,二权限问题. 1.缺少index.html或者index.php文件 复制代码 代码如下: server {    listen       80;    server_name  localhost;    index  index.php index.html;    root  /var/www;} 如果在/var/www下面没有index.php,index.html的时候,直接访问域名,找不到文件,会报40

  • apache服务出现Forbidden 403问题的解决方法总结

    在配置Linux的 Apache服务时,经常会遇到http403错误,我今天配置测试时也出现了,最后解决了,总结了一下.http 403错误是拒绝访问的意思,有很多原因的.还有,这些问题在win平台的Apache里一样会发生!我按照经验总结的主要有以下4种原因! 本人测试的环境 是:Scientific Linux 5.3(与RHEL和CentOS百分百兼容!),其它版本的Linux应该通用,没测试. 1. 访问的文档权限不够.要755以上权限.解决方法:用命令chmod 755 /var/ww

  • mysql启动失败之mysql服务无法启动(服务没有报告任何错误)的解决方法

    目录 错误提示 尝试以下步骤,最终解决问题: 总结 错误提示 My SQL server8.0 安装后,启动失败,提示信息如下: 尝试以下步骤,最终解决问题: 1 查看host文件(C:\Windows\System32\drivers\etc\hosts),是否修改过本地域名,如果将localhost对应的地址修改过,有可能会导致连接mysql server失败. 解决方法:将localhost映射的地址注释掉 2 如果在mysql的安装路径(C:\Program Files\MySQL\My

  • sql2005 本地计算机上的SQL SERVER服务启动后又停止了解决方法

    本方法主要是解决SQL Server运行过程中出现的"本地计算机上的MSSQLSERVER服务启动后又停止了.一些服务自动停止,如果它们没有什么可做的"解决方法. 笔者ASP运行环境:操作系统为Windows XP SP2,IIS的版本为默认的5.1,数据库为SQL Server 2005(MDAC版本为2.8) 一.出现"本地计算机上的MSSQLSERVER服务启动后又停止了.一些服务自动停止,如果它们没有什么可做的" 1.开始-->管理管理工具-->

  • MySql 5.7.14 服务没有报告任何错误的解决方法(推荐)

    参照网上MySql 5.6的安装步骤,安装MySql服务后,使用net start mysql命令启动服务时,报错: MySQL 服务正在启动 .MySQL 服务无法启动. 服务没有报告任何错误. 请键入 NET HELPMSG 3534 以获得更多的帮助. 经过查找,找到了解决方法. 方法和步骤如下所示: 1.从官网下载MySQL http://dev.mysql.com/downloads/mysql/ ZIP Archive版本:mysql-5.7.14-winx64 2.解压到想安装到的

  • SQL server服务显示远程过程调用失败的解决方法

    刚刚打开SQL Server 2008,想要新建一个数据库,却发现出现了一个问题,这个问题由于之前没有遇到过,所以下面整理解决SQL server服务远程调用失败的几个方法,供大家参考,具体内容如下 先看看出现的问题: 出现上面这个错误的原因可能是由于咱们在装VS2012或者其他版本的时候,这个VS会自动装"Microsoft SQL Server 2013(2012) ExpressLocalDB"服务,所以导致SQL server2008,中SQL server服务显示远程过程调用

  • Apache启动提示错误undefined symbol: libiconv_open解决方法

    昨晚整合apache和php是实在找不到解决办法,Google 百度都转一圈了,总算在百度找回来解决方法,记录一下,这个问题是在apache启动时出现的: ./apachectl  start提示下面的错误: 复制代码 代码如下: httpd: Syntax error on line 57 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: /

  • apache documentroot指向htcdoc之外提示403错误的解决方法

    后来发现,原来又是Apache没配置 好,是apache的mod_authz_host模块在起控制作用. 1.如果不启用vhosts 只需修改 httpd.conf 默认Directory节如下,注意红色部分,表示目录/usr/local/apache/htdocs允许所有 主机访问 复制代码 代码如下: <Directory "/usr/local/apache/htdocs"> # # Possible values for the Options directive

  • mysql服务无法启动报错误1067解决方法(mysql启动错误1067 )

    试了谷歌到的几种方法,都没有解决,然后突然想起在启动apache的时候,iis的端口占用情况(因为我的apache也使用了80端口),所以  打开命令行 netstat -aon|findstr "3306" 结果显示 默默的在内心深处骂了一句"靠", 果然是端口占用,然后,顺藤摸瓜 tasklist|findstr "416" 结果显示 不得不联想到,优酷的攻城狮们的mysql数据库绝对不是使用的默认3306端口,然后杀掉explorer.ex

  • Windows 2008 R2服务管理器刷新失败的解决方法

    这几天在做实验,一台服务器安装了Windows 2008 R2 X64系统,当我想安装服务器角色的时候,发现无法安装,出现了"服务器刷新失败",点击它弹出对话框提示"刷新服务器管理器时出现意外错误: 异常来自 HRESULT:0x800F0818.有关详细信息,请参阅事件日志: 诊断.事件查看器.应用程序和服务日志.Microsoft.Windows.服务器管理器.操作" 然后我就查看日志,日志内容如下: 无法发现系统的状态.找到一个意外的异常: System.Ru

  • windows7下启动mysql服务出现服务名无效的原因及解决方法

    问题原因:mysql服务没有安装. 解决办法: 在 mysql bin目录下 以管理员的权限 执行 mysqld -install命令 然后仍然以管理员的权限 net start mysql 开启Mysql服务了. 附卸载mysql服务的方法. 1.以管理员的权限 net stop mysql ,关闭mysql服务 2.以管理员的权限 mysqld -remove ,卸载mysql服务

随机推荐