解决 Nginx 403 forbidden

0. 「事发」

本来用 vue 简单的写了一个小工具,直接上线了,配置完域名和 https 本来想着可以成功访问了,结果出现了 403 错误页面。查找资料得知几种解决方法,记录一下。

1. 解决方法

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

使用下面的命令,查看nginx的启动用户

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

将nginx.config的user改为和启动用户一致,即开头的 user 后面的名称

# nginx.conf

user root;

...

如果不想更改用户组或者不方便更改,可以尝试更改访问目录的拥有者及用户组

# 示例:
chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:用户组名称 文件或目录
# 参数 -R : 进行递归( recursive )的持续更改,即连同子目录下的所有文件、目录都更新成为这个用户组。常常用在更改某一目录的情况。
# 以 nginx.conf 中 user 为 www 可更改
chown -R www:www test

此种方法与下文的修改权限有别,有些情况下即使修改权限也无法访问成功,必须更改用户组

1.2 缺少index.html或者index.php文件

以此配置为例:

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

当路径/data/www/下不存在index.phpindex.html的时候会报 403 错误。

1.3 权限问题

如果nginx没有web目录的操作权限,也会出现403错误,修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决

修改命令:

chmod -R 777 /data/www/

注意一定至少要保证读的权限

1.4 SELinux设置

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

操作方法:
看当前 selinux 的状态

/usr/sbin/sestatus

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

vim /etc/selinux/config

#SELINUX=enforcing
ELINUX=disabled

重启生效。reboot。

reboot

2. 后记

我在折腾权限之后,还是不行,最后才发现我的路径写错了...
所以,如果配置有问题,还是先检查一下自己的设置吧。

你可能感兴趣的:(解决 Nginx 403 forbidden)