是在在本地用虚拟机中通过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端打不开图片
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的访问
[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、访问成功
访问Nginx服务上报403,一般都是以上几种情况,不同的情况需要不同的处理方法
*请认真填写需求信息,我们会在24小时内与您取得联系。