You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 13:36:14