记录一次nginx 403错误的处理情况 ,当然nginx 403错误引起的原因有很多,这里记录的只是其中一种 (权限引发的问题)
场景:
我把个人简历放在github上,但是访问很慢,就把这个静态简历迁移到我的VPS服务器上,使用nginx做web服务,访问时出现403错误
nginx配置(只展示重要部分):
server {
listen 10000 ;
server_name xxxx.xxxx.com ;
access_log /home/resume/log/access.log main ;
error_log /home/resume/log/error.log ;
location / {
root /home/resume/www ;
index index.html ;
}
}
访问结果:
查看nginx错误日志:
出现了关键字“Permission denied”
2016/12/23 14:02:26 [error] 5887#5887: *573 open() "/home/resume/www/index.html" failed (13: Permission denied), client: 192.168.15.2, server: xxxx.xxxx.com, request: "GET /index.html HTTP/1.0", host: "xxxx.xxxx.com"
排错记录:
一看是权限问题,马上把** /home/resume/www**目录下的所有文件权限改为777 ,重新访问还是 403 ,反反复复折腾了很久,无解....
第二天晚上继续,怀疑是nginx配置错误,搜索 nginx html时找到这个文章nginx 代理本地的html
原来是nginx配置中的用户权限问题
-
查看nginx worker 用户,www-data 是nginx默认配置的
- 静态文件存放的文件夹用户是scott,组为executor ,所nginx用户为www-data导致权限问题(如果nginx配置的用户和静态文件的用户不匹配,那怕权限是777也会出现权限问题,具体看<nginx.conf> nginx用户权限)
- 配置nginx权限和静态文件统一
- 编辑nginx配置文件
vim /etc/nginx/nginx.conf
- 修改文件第一行的为静态文件的用户和组
# user 用户名 用户组 ; 这里的用户名和组就是静态文件的
user scott executor ;
- 检查配置正确性
nginx -t
上面的命令执行后返回以下内容则成功
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
- 重启nginx
nginx -s stop
nginx -c /etc/nginx/nginx.conf