今天在学习 ngin防盗链 时,在另一台服务器上部署了一个 html 文件,然后访问出现了 403 错误。去打开 nginx 错误日志,查看有如下错误信息:
详细错误如下:
2018/07/03 02:23:55 [error] 16274#0: *1 open() "/root/nginx/html/daolian/favicon.ico" failed (13: Permission denied), client: 192.168.238.1, server: s1.example.com, request: "GET /favicon.ico HTTP/1.1", host: "s1.example.com", referrer: "https://s1.example.com/"
上面讲我们使用 HTTP 协议访问 GET /favicon.ico HTTP/1.1 资源时,open() "/root/nginx/html/daolian/favicon.ico" failed 打开文件失败,原因为 Permission denied (没有权限)。
上面的日志中“Permission denied”,一看就知道是权限出了问题,通过 ps -ef | grep nginx,查看 nginx 的进程信息:
root 15889 1 0 00:01 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; nginx 15890 15889 0 00:01 ? 00:00:00 nginx: worker process root 16795 15654 0 00:48 pts/3 00:00:00 grep --color=auto nginx
发现 nginx 进程的用户是 nginx,而我们创建 /root/nginx/html/daolian/favicon.ico 文件的用户是root;因此,只要把 nginx 的进程 user 改为 root 即可,vim /etc/nginx/nginx.conf:
user root;
之后,/etc/init.d/nginx restart 重启 nginx,就可以正常访问网站了。