您的位置:首页 > 运维架构 > Apache

Apache 403 error, (13)Permission denied: access to / denied问题

2015-08-20 12:34 615 查看
虚拟主机(Virtual Host)是指在一个机器上运行多个网络站点 (比如:www.company1.com和www.company2.com)。 如果每个网络站点拥有不同的IP地址,则虚拟主机可以是"基于IP"的; 如果只有一个IP地址,也可以是"基于主机名"的, 其实现对最终用户是透明的。具体细节可以查看Apache官方说明

一. “基于主机名”虚拟主机的配置

Listen 81

NameVirtualHost *:81

<VirtualHost *:81 >

ServerAdmin example@company.com

DocumentRoot yourRoot

<Directory "yourRoot ">

Options FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

配置说明:

81 : 为端口号,可以是其他现在系统未用的端口

yourRoot : linux下格式形如: /export/www 注意最后没有"/"

将上面的添加到apache的配置文件httpd.conf(linux下在/usr/local/apache2/conf/,视具体情况而定),然后重新启动Apache .

注意:

要配置基于主机名的虚拟主机,必须保留原有的80端口。

二. 查看配置是否成功

在浏览器中输入 http://localhost:81 查看是否配置成功。

三. 常见问题常见解决方案

当在浏览器中查看配置成功与否出现问题时,可优先到Apache官方网站的FAQ 上或用搜索引擎搜索你的问题。

我这里就最常见403问题:


Forbidden

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

提供几种常见的解决方法:

1.按上面的配置正确,特别是:

Order allow,deny

Allow from all

2. 确保youRoot文件夹下有index.html文件(或名为index而后缀为其他形式(如.jsp .php等)的文件) ,因为Apache默认以index.html为网站首页,如果没有这个文件就会出现上面的403错误。

注:如果你想以其他形式的文件(如:index.jsp或index.php等)作为出现的网页,可将Apache的配置文件中的:

<IfModule dir_module>

DirectoryIndex index.html

</IfModule>

改为(如你想用index.jsp):

<IfModule dir_module>

DirectoryIndex index.html index.jsp

</IfModule>

如果需要浏览该文件夹下的内容,可以在</Directory>前添加:

Options Indexes

就可以了。

3. 针对linux用户,windows或其他用户一般没这种情况。linux系统中一般会自带apache,在修改了配置文件后,最好到安装Apache的目录下重启Apache。

如果是CentOS系统,则有可能以下原因

检查了一圈httpd.conf和目录权限,均没有发现问题。

最后,看了这篇文章,发现是因为系统启动了SELINUX导致的。

http://stackoverflow.com/questions/8816836/apache-403-error-13permission-denied-access-to-denied-fedora-16

关闭SELINUX

setenforce 0



vim /etc/selinux/config

修改

SELINUX=enforcing

改成

SELINUX=disabled

细检查了一遍配置文件httpd.conf,找到这么一段:
代码如下复制代码
<Directory />

Options FollowSymLinks

AllowOverride None

Order deny,allow

deny from all

Satisfy all

</Directory>
然后试着把deny from all中的deny改成了allow,保存后重起了apache,然后再一测试我的网页

apache

解决Apache下403 Forbidden错误

正 文:

今天在公司电脑上安装Apache,版本2.2.8,装完刚测试可以;配置了下php的php.in文件再次localhost打开发现错误:HTTP 错误 403 - 禁止访问,即403 Forbidden:You don't have permission to access / on this server.权限又不够了?



马上打开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>
系统是centos,You don't have permission to access / on this server.

在google上搜索了一下,大部分的解决方法就是。
代码如下复制代码
<Directory />

Options FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

</Directory> 这里改成

<Directory />

Options Indexes FollowSymLinks

AllowOverride None

</Directory
>

我改了之后还是会出现上面的错误,于是看一下自己设定的工作目录权限。
代码如下复制代码
Options ExecCGI Includes
改成下面这行设置后,显示正常。
代码如下复制代码
Options Indexes FollowSymLinks
当访问类unix操作系统上的/usr/local/apache2/htdocs/foo/bar.htm文件时,你收到了Permission Denied的错误。

首先,查看文件的访问权限:
代码如下复制代码
$ cd /usr/local/apache2/htdocs/foo

$ ls -l bar.htm
如果须要的话,就修复它们:
代码如下复制代码
$ chmod 644 bar.html
对文件夹以及每个父文件夹做相同的操作
代码如下复制代码
(/usr/local/apache2/htdocs/foo,/usr/local/apache2/htdocs,/usr/local/apache2,/usr/local/,/usr):

$ ls -la

$ chmod +x

$ cd ..

$ #repeat up to the root
在一些系统上,可使用工具namei来列出各个路径上的不同组件的访问权限,然后去发现是否有权限问题:
代码如下复制代码
$ namei -m /usr/local/apache2/htdocs/foo/bar.html
3、最后,如果还是没有解决问题,那么需要查看扩展的访问权限。

使用setenforce 0关闭SELinux,看是否解决问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: