Nginx配置/home/ubuntu目录文件返回404错误求助
Nginx root指向用户主目录返回404的解决办法
核心原因:权限或安全策略限制
Nginx默认以www-data用户运行,而用户主目录(比如/home/ubuntu)的默认权限通常会阻止非所有者访问,这是导致404的最常见原因。下面是分步解决方法:
1. 检查并修复目录/文件权限
先确认Nginx进程有没有访问目标目录的权限:
查看用户主目录权限:
ls -ld /home/ubuntu如果输出是
drwx------,说明只有ubuntu用户能访问,www-data完全进不去。需要修改为至少711:chmod 711 /home/ubuntu检查网站根目录权限:
ls -ld /home/ubuntu/tabs确保权限为
755(所有者可读可写可执行,其他用户可读可执行):chmod 755 /home/ubuntu/tabs修复目录内文件的读权限:
chmod -R 644 /home/ubuntu/tabs/*
2. 验证路径与文件存在性
别忽略最基础的问题:确认目标路径下确实存在配置中指定的文件:
# 检查根目录的index文件 ls /home/ubuntu/tabs/main.html # 检查folder目录下的文件 ls /home/ubuntu/tabs/folder/main1.html /home/ubuntu/tabs/folder/main2.html
如果文件不存在,先把文件放到对应位置。
3. 修正Nginx配置中的路径写法
你的location /folder块里用了绝对路径(/folder/main1.html),这会让Nginx直接从系统根目录找,而不是基于root指定的路径。建议修改为相对路径:
location /folder { try_files folder/main1.html folder/main2.html =404; }
或者更灵活的写法:
location /folder { try_files $uri $uri/ /folder/main1.html /folder/main2.html =404; }
4. 重启Nginx生效
修改权限或配置后,必须重启Nginx:
sudo systemctl restart nginx
5. (可选)检查SELinux限制(针对CentOS/RHEL系系统)
如果是CentOS等开启SELinux的系统,可能会阻止Nginx访问用户主目录。先临时关闭测试:
setenforce 0
如果访问正常了,就给目录添加正确的SELinux上下文:
semanage fcontext -a -t httpd_sys_content_t "/home/ubuntu/tabs(/.*)?" restorecon -Rv /home/ubuntu/tabs
内容的提问来源于stack exchange,提问作者Rich Liu
相关产品推荐
相关产品推荐

