Apache 安装后Error 403的故障排错方法

2018年01月07日 14:25:41

个人分类: Linux

一、问题描述

在apache2的httpd配置中,很多情况都会出现403。

刚安装好httpd服务,当然是不会有403的问题了。主要是修改了一些配置后出现,问题描述如下:

  • 修改了DocumentRoot目录指向后,站点出现403错误。
  • 设置了虚拟主机目录也可能导致403。
  • apache的httpd服务成功启动,看起来都很正常,却没有权限访问
  • 日志出现: access to / denied (filesystem path '/srv/lxyproject/wsgi/django.wsgi') because search permissions are missing on a component of the path
  • 设置虚拟目录后,错误日志出现:client denied by server configuration: /srv/lxyproject/wsgi/django.wsgi

二、分析问题及方案

下面一步步解决问题时注意错误日志内容。ok,开始。

1、httpd.conf中目录配置文件

如果显示更改了DocumentRoot,比如改为 "/usr/local/site/test" 。site目录和test目录是通过使用mkdir建立的,然后在test目录下放一个index.html。这种情况应该查看httpd.conf中配置。

你的<Directory "/usr/local/site/test">一定要和DocumentRoot一致,因为这段Directory是apache对该目录访问权限的设置,只有设置正确的目录,DocumentRoot才会生效。

<Directory "/usr/local/site/test">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks #
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None #
# Controls who can get stuff from this server.
#
Require all granted
</Directory>

2、目录访问权限

第一步配置正确还是出现403,检查目录配置<Directory "/usr/local/site/test">中是否有Deny from all。有则所有访问都会被拒绝,当然403了。

可以设置为Allow from all或者Require all granted来处理。

不要修改根目录中Deny from all。

3、目录权限

如果至此还是403,可能是网站目录的权限问题。

apache要求目录具有执行权限,也就是x,要注意的是,你的目录树都应该拥有这些权限。

假如你的目录是/usr/local/site/test,那么要保证/usr,/usr/local,/usr/local/site,/usr/local/site/test这四个层级的目录都是755权限。

#chmod 755 /usr/local/site
#chmod 755 /usr/local/site/test

我犯过一个错就是只设置了最后一级目录权限,没有设置上级目录权限,导致403。

4、 虚拟目录

【这个问题我没遇到过,因为我没这样写过,网上资料这么写,可作为参考】

如果设置的是虚拟目录,那么你需要在httpd.conf中定义一个虚拟目录,而且像极了如下的片段:

Alias /folder "/usr/local/folder"                       

<Directory "/usr/local/folder">                         
Options FollowSymLinks                            
AllowOverride None                              
Order deny,allow                               
Deny from all                                 
Allow from 127.0.0.1 192.168.1.1                       
</Directory>      

如果是这一种情况,而且你写得类似我上面的代码,三处folder都是一样一样的,那绝对会是403!怎么解决呢,就是把跟在Alias后面斜杠后面的那串改了,改成什么,不要和虚拟目录的文件夹同名就好,然后我就可以用改过后的虚拟目录访问了,当然,改文件夹也行,只要你不怕麻烦,只要Alias后面的虚拟目录定义字符(红色)和实际文件夹名(黑色)不相同就OK。

5、selinux的问题

如果依然是403,那就是selinux在作怪了,于是,你可以把你的目录进行一下selinux权限设置。

今天我遇到的就是这个问题了。

#chcon -R -t httpd_sys_content_t /usr/local/site
#chcon -R -t httpd_sys_content_t /usr/local/site/test

网上资料说不过,这一步大多不会发生。但我的问题确实是,可能跟系统有关,具体原理还不是很懂。

6、wsgi的问题

我的虚拟主机配置为:

<VirtualHost *:80>

WSGIScriptAlias / /srv/lxyproject/wsgi/django.wsgi
Alias /static/ /srv/lxyproject/collectedstatic/ ServerName 10.1.101.31
#ServerName example.com
#ServerAlias www.example.com <Directory /srv/lxyproject/collectedstatic>
  Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory> <Directory /srv/lxyproject/wsgi/>
Allow from all
</Directory>
ErrorLog /etc/httpd/logs/lxyproject.error.log
LogLevel warn
</VirtualHost>

我访问

log报错:

client denied by server configuration: /srv/lxyproject/wsgi/django.wsgi

解决办法:

修改<Directory /srv/lxyproject/wsgi/>中Allow from all为:Require all granted

这个问题是因为版本的原因,

我的httpd版本为:

[root@yl-web conf.d]# rpm -qa |grep httpd
httpd-devel-2.4.6-31.el7.centos.x86_64
httpd-tools-2.4.6-31.el7.centos.x86_64
httpd-2.4.6-31.el7.centos.x86_64

而2.3以下版本用Allow from all,2.3及以上版本为Require all granted。

<Directory /home/aettool/aet/apache>
<IfVersion < 2.3 >
Order allow,deny
Allow from all
</IfVersion>
<IfVersion >= 2.3>
Require all granted
</IfVersion>
</Directory>

Apache 安装后Error 403的故障排错方法(linux)的更多相关文章

  1. centos下apache安装后无法访问

    2013.11.28遇到的问题: -------------------------------------- 一.centos下apache安装后无法访问 得查一下防火墙的问题 iptables添加 ...

  2. xampp Apache Access forbidden! Error 403解决方法

    今天下载了最新的xampp,配置了一个虚拟主机,一直在报错,Access forbidden! Error 403 这很明显是服务器不允许访问文件,但是我的虚拟主机配置如下: DocumentRoot ...

  3. Apache 安装后启动出现的错误

    错误信息 1: configure: error: APR not found 解决方法:yum install apr* -y 错误信息 2:httpd: apr_sockaddr_info_get ...

  4. apache安装后编译新模块

    1.下载对应版本的源码包 2.解压后找到modules/mappers目录并进入 3.运行如下命令自动编译.安装和修改httpd.conf文件: /usr/sbin/apxs -c -i -a mod ...

  5. apache安装错误error: APR not found解决办法

    linux安装时安装种类不同,一些组件包可能不会被安装,导致linux下安装软件的时候缺这个缺那个,今天为大家介绍linux安装apache时报apr找不到的解决办法 方法/步骤   下载依赖包 wg ...

  6. 【经验】Windows7、8、8.1 MSI安装错误Error Code 2502 & 2503 解决方法

    [因] 今天升级TortoiseSVN到1.8.8,出现问题:Error Code 2502 & 2503,一直不能安装成功. 上网一搜,国内没找到好的解决方法,在一个外文网上找到了方案,原链 ...

  7. Tortoise SVN安装后右键没有菜单的解决方法

    最近换了WIN7的操作系统,感觉用起来爽极了,于是开始一个个装软件,最让我头疼的就是安装SVN,安装没有问题,完成后却无法显示右键菜单,开始同事也帮我找原因,以为是我设置问题或者哪里阻止了程序,还以为 ...

  8. VM安装后没有桥链接协议解决方法

    从昨天到今天各种折腾的.网络就是各种不通,能使用的手段都上了,还是不行.奇怪的连DNS都ping不通. ping DNS时一致报:  Destination Host Unreachable ... ...

  9. debian9 独显安装后进入不了桌面解决方法

    # apt-get purge nvidia. # /etc/init.d/sddm stop (sddm for kde) # aptitude --without-recommends insta ...

随机推荐

  1. js和jquery通过this获取html标签中的属性值[转藏]

    <html> <head> <script type="text/javascript" src="jquery-1.10.2.min.js ...

  2. [LeetCode] 387. First Unique Character in a String 字符串的第一个唯一字符

    Given a string, find the first non-repeating character in it and return it's index. If it doesn't ex ...

  3. [LeetCode] 463. Island Perimeter 岛的周长

    You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represen ...

  4. C1128节数超过对象文件格式限制: 请使用 /bigobj 进行编译

    今天debug C++项目是遇到 解决方案: 右键项目—>属性 输入 /bigobj 再次编译问题解决

  5. 微设计基础架构(MDI)

    微设计基础架构(MDI) 了解微设计基础架构(MDI)的概念,它们如何帮助开发,以及它们与DevOps和微服务等技术的关系. 技术决策既困难又严肃,可以决定项目的成败.如何找到合适的技术栈?“微设计基 ...

  6. Influx Sql系列教程七:delete 删除数据

    前面介绍了使用insert实现新增和修改记录的使用姿势,接下来我们看一下另外一个简单的使用方式,如何删除数据 1. delete 语句 delete的官方语法如下 DELETE FROM <me ...

  7. Python Tkinter 窗口创建与布局

    做界面,首先需要创建一个窗口,Python Tkinter创建窗口很简单:(注意,Tkinter的包名因Python的版本不同存在差异,有两种:Tkinter和tkinter,读者若发现程序不能运行, ...

  8. dubbo学习之路-SPI机制

    dubbo学习之路-SPI机制 1.SPI 1.1Java SPI 原理 SPI是service provider interface简称.在java JDK中 内置的一种服务提供发现机制.它解决在一 ...

  9. Java开发笔记(一百二十三)AWT图像视图

    前面介绍了AWT的几种基础控件,从按钮到文本标签,从输入框到选择框,无一例外都能显示文字,唯独无法显示某张图片文件.本以为AWT会提供专门的控件来显示图片,然而偏偏没有意料之中的图像控件,这可真是弱爆 ...

  10. Pandas的基础操作(一)——矩阵表的创建及其属性

    Pandas的基础操作(一)——矩阵表的创建及其属性 (注:记得在文件开头导入import numpy as np以及import pandas as pd) import pandas as pd ...