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.php
或index.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. 后记
我在折腾权限之后,还是不行,最后才发现我的路径写错了...
所以,如果配置有问题,还是先检查一下自己的设置吧。