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

Nginx服务器文件存在却返回404的问题求助

Nginx无法加载指定目录文件的排查与解决

以下是针对你遇到的问题的具体排查与解决步骤:

1. 验证文件路径与存在性

  • 执行命令确认文件和目录存在,且路径拼写完全正确(Linux系统区分大小写):
    ls -l /var/www/mysite/html/
    
    确保输出中能看到index.html及其他需要访问的文件。

2. 修复目录与文件权限

Nginx默认以www-data用户运行,必须确保该用户拥有目录的执行权限(可进入目录)和文件的读取权限:

  • 递归设置目录与文件的所属用户组:
    chown -R www-data:www-data /var/www/mysite/html/
    
  • 递归设置安全权限(目录755保证可进入,文件644保证可读取,避免开放过高权限):
    chmod -R 755 /var/www/mysite/html/
    chmod -R 644 /var/www/mysite/html/*
    

3. 处理SELinux限制(CentOS/RHEL系系统适用)

如果你的服务器是CentOS、RHEL等系统,SELinux默认会阻止Nginx访问自定义网站目录:

  • 查看当前SELinux HTTP相关策略:
    getsebool -a | grep httpd
    
  • 允许Nginx读取用户自定义目录内容:
    setsebool -P httpd_read_user_content 1
    
  • 或者为目录添加正确的SELinux上下文(更规范的持久化做法):
    semanage fcontext -a -t httpd_sys_content_t "/var/www/mysite/html(/.*)?"
    restorecon -Rv /var/www/mysite/html/
    

4. 重载Nginx配置

修改配置或调整权限后,必须让Nginx加载新配置:

  • 先验证配置语法是否正确:
    nginx -t
    
  • 验证通过后重载配置(不中断现有服务):
    systemctl reload nginx
    

补充说明

你的Nginx配置逻辑本身没有问题:try_files $uri $uri/ =404会优先匹配请求的文件,若请求根路径/,会自动匹配index指令中设置的index.html文件。问题基本集中在路径错误、权限不足、SELinux限制这几个外部因素上。

内容的提问来源于stack exchange,提问作者glass1212

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:37:27