Nginx报错403 forbidden (13: Permission denied)的解决办法

引起nginx 403 forbidden通常是三种情况:一是缺少索引文件,二是权限问题,三是SELinux状态.

一、缺少index.html或者默认访问页面,就是配置文件中location下没有默认的index.html。也可以通过index指定 index.htm文件位置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /data/blog;
#root /usr/share/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {

}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

二、权限问题,如果nginx没有web目录的操作权限,也会出现403错误。

解决办法:1. 修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决

  1. 把文件目录的访问权限分配给nginx用户

使用chown命令可以修改文件或目录所属的用户:

chown 用户 目录或文件名

例如:chown qq /home/qq  (把home目录下的qq目录的拥有者改为qq用户)

使用chgrp命令可以修改文件或目录所属的组:

chgrp 组 目录或文件名

例如:chgrp qq /home/qq  (把home目录下的qq目录的所属组改为qq组)

三、SELinux设置为开启状态(enabled)的原因

首先查看本机SELinux的开启状态,如果SELinux status参数为enabled即为开启状态

1
/usr/sbin/sestatus -v

如果显示disabled 表示SELinux已经关闭了。如果状态为enabled,则需要关闭。
1、临时关闭(不用重启)

1
setenforce 0

2、修改配置文件 /etcselinux/config,将SELINUX=enforcing改为SELINUX=disabled

1
2
3
4
vi /etc/selinux/config

#SELINUX=enforcing
SELINUX=disabled

我这次遇到的就是第三个问题 SELinux(Security-Enhanced Linux): 强制访问控制的实现,是 Linux历史上最杰出的新安全子系统

问题解决资料学习来自:cleey

分享到