1、问题背景

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

nginx跨域报504错误(nginx访问403报错)(1)

2、处理思路

nginx跨域报504错误(nginx访问403报错)(2)

3、处理过程

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

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

nginx跨域报504错误(nginx访问403报错)(3)

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

nginx跨域报504错误(nginx访问403报错)(4)

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

nginx跨域报504错误(nginx访问403报错)(5)

修改后保存,重启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目录作为索引

nginx跨域报504错误(nginx访问403报错)(6)

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

nginx跨域报504错误(nginx访问403报错)(7)

3、重启nginx服务

nginx跨域报504错误(nginx访问403报错)(8)

4、访问成功

nginx跨域报504错误(nginx访问403报错)(9)

1.4、案例总结

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

,