先确认网站根目录是否正确指向文件所在路径,再检查index.html是否存在、命名准确且权限为644,接着验证Nginx是否监听80端口并正确匹配server_name,最后排查SELinux和安全组拦截。

文件明明在 /www/wwwroot/your-site/ 下,浏览器一访问就 404,不是代码问题,是宝塔没把请求正确落到你放文件的目录里。
确认网站根目录是否指向你上传文件的位置
宝塔创建站点时默认会生成一个空目录,但不会自动把你的 HTML 文件放进去。如果你手动上传了 index.html,却忘了在「网站设置 → 根目录」里改成对应路径,Nginx 就会去错地方找文件。
- 进宝塔「网站」列表,点击目标站点右侧的「设置」
- 看「根目录」字段填的是不是你实际放文件的路径,比如
/www/wwwroot/my-html-site - 如果不是,直接修改并保存;改完别忘了点右上角「重载配置」,否则不生效
- 常见错误:路径末尾多了一个斜杠(
/www/wwwroot/site/)或少写了层级(/www/wwwroot而非完整子目录)
检查默认首页文件名和权限是否匹配
Nginx 默认只认 index.html、index.htm、index.php 这几个名字。如果你传的是 home.html 或 Index.html(大小写敏感),它就不会当入口文件处理。
- 用宝塔「文件」管理器进入你设的根目录,确认存在且名称完全匹配
index.html(小写、无空格、无后缀错误) - 右键点击该文件 → 「属性」→ 确认权限是
644,所有者是www - 如果文件名不对,直接重命名为
index.html;如果权限不对,在终端执行:chmod 644 /www/wwwroot/your-site/index.html
排查 Nginx 是否真在监听 80 端口并路由到该站点
即使根目录和文件都对,如果 Nginx 没监听 80(或你用的其他端口),或者域名没被正确 server_name 匹配,请求根本进不到这个站点配置里。
立即学习“前端免费学习笔记(深入)”;
- SSH 登录服务器,运行:
netstat -tlnp | grep :80,确认有nginx进程在监听 - 检查该站点配置中
server_name是否填了你正在访问的域名或 IP;如果直接用 IP 访问,server_name应为空或包含该 IP - 在宝塔「网站」设置里,确认「SSL」开关没误开导致 HTTP 请求被跳转或拦截(未配证书时开着 SSL 会导致 404 或连接失败)
- 临时用
curl -I http://127.0.0.1测试本地回环,排除 DNS 和网络层干扰
别忽略 SELinux 或安全组这类“隐身”拦截
尤其在 CentOS 7/8、Alibaba Cloud 或 Tencent Cloud 的默认镜像上,SELinux 可能阻止 Nginx 读取你上传的文件,现象就是 404 —— 它连文件存在与否都不告诉你。
- 终端执行:
getenforce,如果返回Enforcing,说明 SELinux 启用中 - 临时测试是否是它导致的:执行
setenforce 0(仅本次生效),再刷新网页;如果好了,就是 SELinux 上下文问题 - 永久修复:执行
chcon -R -t httpd_sys_content_t /www/wwwroot/your-site/ - 同时检查云厂商控制台里的「安全组」,确保 80 端口对外放行
真正卡住人的往往不是配置本身,而是你认为“已经做完”的那步——比如改了根目录但没点「重载配置」,或者传了 index.html 却放在了父级目录而非站点根目录。每次改动后,用 nginx -t 验证语法 + systemctl reload nginx(或宝塔里点重载)才是闭环动作。



















