403可能出现的原因是什么?

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

查看运行 nginx 的用户

# 输出启动用户
ps aux | grep "nginx: worker process" | awk '{print $1}'

解析:

ps 查看进程

ps a 显示现行终端的所有程序

ps u 以用户为主的格式显示程序状态

ps x 显示所有程序,不以终端机来区分

grep 搜索匹配

awk 文本分析,上述例子中,每行按空格或TAB分割,输出文本中的第1项

修改 nginx.config 的用户

vi /etc/nginx/nginx.conf

二、缺少 index.html 或 index.php

nginx 配置文件中 server 块配置目录找不到 index 的文件

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

三、权限问题

nginx 没有操作配置文件中 root 目录的权限。

解决:

  • 修改目录权限

  • 或修改 nginx 启动用户

四、SELinux 设置为开启状态的原因

修改 /etc/selinux/config 配置为 disabled , reboot 重启


拓展

1、SELinux 是什么? 为什么会导致403?

SELinux: Security Enhanced Linux 的缩写,也就是安全强化的 Linux。

传统的 Linux 系统中,默认权限是对文件或目录的所有者、所属组和其他人的读、写和执行权限进行控制,这种控制方式称为自主访问控制(DAC)方式;

而在 SELinux 中,采用的是强制访问控制(MAC)系统,也就是控制一个进程对具体文件系统上面的文件或目录是否拥有访问权限,而判断进程是否可以访问文件或目录的依据,取决于 SELinux 中设定的很多策略规则