spice and wolfspice and wolf Be the One you wanna Be

nginx静态资源访问403错误

出现403错误原因有2:

启动用户和nginx工作用户不一致

如当前用户是vagrant,并且用当前用户启动的nginx,就需要修改/etc/nginx/nginx.conf下的user属性

修改user属性

关闭防火墙

# 查看防火墙启动状态
sudo systemctl status firewalld
# 如果防火墙开启,则关闭防火墙
sudo systemctl stop firewalld

关闭selinux

# 查看selinux状态
/usr/selinux/sestatus
# 如果为开启状态,则关闭
vi /etc/selinux/config
# 将SELINUX状态改为disabled
SELINUX=disabled
# 重启
reboot

没有访问静态资源目录的权限

这个可能是最常见也是最可能被忽视的问题,我们先来看下403出现的常见情况:

  1. ip在黑名单中,静态资源被禁止访问。这种并不常见,一般出错也不是这种情况。
  2. 禁止浏览资源中的资源目录。例如访问http://192.168.1.5/test/test.txt,可以访问并下载,但是访问http://192.168.1.5/test/则报403错误。
  3. 没有权限访问资源文件。

比较常见的解决方案是给静态资源文件所有权限:

chmod -R 777 /server/nginx/

但这样仍会报错,主要原因为外网要访问/server/nginx/静态资源,不管要/server/nginx/的读权限,还需要其父级目录的可执行权限,典型的如/server/可执行权限/的可执行权限,这时的解决方案分两种:

  1. 用当前用户在最上级目录创建一个文件夹,在其中放置静态资源服务器的对应目录(当前就是采用的这种方法)。
  2. 赋予静态资源服务器对应目录的父级目录可执行权限(静态资源服务器目录在/home/等目录下就需要这样解决,但是此方案比较麻烦且会增加系统风险,比较不推荐,还是推荐重新创建一个目录用来实现静态资源服务器)。

在完成以上操作后,仍然不能访问静态资源服务器的资源目录,这时就要考虑出现403错误的第二个可能原因了,解决方法也很简单,直接加入一条配置属性就行:

允许直接访问文件目录

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Press ESC to close