错误信息:
2023/01/10 17:00:44 [crit] 3002719#0: *20444 stat() "/home/fanbook-mgr/fanbook-mgr.web/dist/index.html" failed (13: Permission denied), client: 60.182.104.237, server: fanbook-mgr.starlight.work, request: "GET / HTTP/2.0", host: "fanbook-mgr.starlight.work"
2023/01/10 17:00:44 [error] 3002719#0: *20444 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 60.182.104.237, server: fanbook-mgr.starlight.work, request: "GET / HTTP/2.0", host: "fanbook-mgr.starlight.work"
站点配置:
server {
listen 80;
listen 443 ssl http2;
server_name fanbook-mgr.starlight.work;
root /home/fanbook-mgr/fanbook-mgr.web/dist;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
ssl_certificate /www/server/panel/vhost/cert/fanbook-mgr.starlight.work/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/fanbook-mgr.starlight.work/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
#SSL-END
location / {
error_page 403 /403;
error_page 404 /404;
error_page 500 /500;
index index.html;
try_files $uri $uri/ /index.html;
}
access_log /www/wwwlogs/fanbook-mgr.starlight.work.log;
error_log /www/wwwlogs/fanbook-mgr.starlight.work.error.log;
}
运行用户是 www
,与 fanbook-mgr
用户属于同一个组 web
,权限是 750
,照道理应该有权限访问?
最终的问题在于全局配置。
全局配置有写:
user www www;
我学习了一下,意思是以 www
用户和 www
用户组运行,而不是它的主用户组 web
。
改为:
user www web;
后正常。
感谢@m0_54204465 的回答。
这个错误信息表明 Nginx 无法访问 /home/fanbook-mgr/fanbook-mgr.web/dist/index.html 文件。这可能是因为文件权限问题导致的。
你已经提到运行用户是 www ,而且它和 fanbook-mgr 用户属于同一组 web,并且权限为 750。这确实是有权限访问的。
然而,有可能存在文件或目录的所有者或所属组不是这两个用户所在的组,从而导致 Nginx 无法访问文件。可以通过使用命令 ls -l 来查看文件的详细信息,以确定所有者和所属组。
如果权限设置正确,那么其它可能的原因是:
如果文件不存在,那么将会出现这种错误。路径有误,检查一下路径是否正确
Nginx 的运行用户无法访问文件所在目录,可以检查父目录权限
我建议你检查一下文件路径和权限,