整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

四种解决Nginx出现403 forbidden 报

四种解决Nginx出现403 forbidden 报错的方法

是在在本地用虚拟机中通过yum安装nginx的,安装一切正常,但是访问时报403,

于是查看nginx日志,路径为/var/log/nginx/error.log。打开日志发现报错Permission denied,详细报错如下:

1. open() "/data/www/1.txt" failed (13: Permission denied), client: 192.168.1.194, server: www.web1.com, request: "GET /1.txt HTTP/1.1", host: "www.web1.com"

没有权限?于是找了不少资料,可以通过下面四步排查解决此问题。你可能只是其中之前配置有问题,不一定四个步骤都用上。

一、由于启动用户和nginx工作用户不一致所致

1.1查看nginx的启动用户,发现是nobody,而为是用root启动的

命令:ps aux | grep "nginx: worker process" | awk'{print $1}'

1.2将nginx.config的user改为和启动用户一致,

命令:vi conf/nginx.conf

二、缺少index.html或者index.php文件,就是配置文件中index index.html index.htm这行中的指定的文件。

1. server {
2. listen 80;
3. server_name localhost;
4. index index.php index.html;
5. root /data/www/;
6. }

如果在/data/www/下面没有index.php,index.html的时候,直接文件,会报403 forbidden。

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

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

1. chmod -R 777 /data
2. chmod -R 777 /data/www/

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

4.1、查看当前selinux的状态。

1. /usr/sbin/sestatus

4.2、将SELINUX=enforcing 修改为 SELINUX=disabled 状态。

1. vi /etc/selinux/config
2.
3. #SELINUX=enforcing
4. SELINUX=disabled

4.3、重启生效。reboot。

见的,引起nginx 403 forbidden有二种原因,一是缺少索引文件,二权限问题。

1、缺少index.html或者index.php文件

如果在/var/www下面没有index.php,index.html的时候,直接访问域名,找不到文件,会报403 forbidden。

例如:你访问www.test.com而这个域名,对应的root指定的索引文件不存在。

2、权限问题

对于PHP而言,如果nginx用户没有web目录的权限,则会导致该错误。

解决办法:修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重起一下就能解决。 如:

【注意】:修改完配置别忘了重启nginx服务


以上就是本文的全部内容,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。后面小编会分享更多运维方面的干货,感兴趣的朋友走一波关注哩~

、问题背景

使用nginx做动静分离,web端打不开图片

2、处理思路

3、处理过程

1)、第一种:nginx的启动用户问题,Permission denied

查看nginx的错误日志,这种错误的原因有很多,比如文件缺少、启动用户问题

查看nginx的启动用户,执行ps -ef | grep nginx,可以查看到启动用户是root

而nginx的默认工作用户是nobody,需要将nginx.conf的user改为和启动用户一致

修改后保存,重启nginx服务即可

/usr/local/nginx/sbin/nginx -s reload

2)、第二种:缺少index.html文件

缺少index.html或者index.php文件,就是配置文件中index index.html index.php这行指定的文件

server {
listen 80;
server_name localhost;
index index.php index.html;
root / var/www;
}

如果在/var/www目录没有index.php,index.html的时候,直接访问域名,就会找不到文件,会报403

3)、第三种:访问目录权限问题

如果nginx没有访问目录(比如/var/www)的读写权限,也会出现403的错误

解决方法:修改web目录的读写权限

chmod -R 755 /var/www

4)、第四种:SELinux设置问题

本机SeLinux为开启enabled状态也会影响到nginx的访问

  1. 首先使用getenforce命令查看,如下图所示,SELinux为开启状态

[root@localhost ~]# getenforce

Enabled

2.如何关闭?

临时关闭

setenforce 0 ##设置SELinux 成为permissive模式

永久关闭

修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled

5)、第五种:目录索引问题

1、查看nginx的报错日志,看到有报错为禁止以/opt目录作为索引

2、修改配置文件,添加autoindex on;打开目录浏览功能

3、重启nginx服务

4、访问成功

1.4、案例总结

访问Nginx服务上报403,一般都是以上几种情况,不同的情况需要不同的处理方法