Nginx 部署静态页到子路径后 404 或 403,按这个顺序查

举报
yd_219824599 发表于 2026/10/23 13:00:23 2026/10/23
【摘要】 Nginx 部署静态页到子路径后 404 或 403,按这个顺序查把静态页挂到已有站点的子路径下,是件看起来很简单的事:一个 index.html,一段 location,scp 上去,reload 完事。但真做的时候经常是打开 404,改一改又变成 403。这篇把排查顺序记下来,下次不用从头试。一、先分清 404 还是 403404 表示 Nginx 根本没把请求映射到某个文件;403 表...

Nginx 部署静态页到子路径后 404 或 403,按这个顺序查


把静态页挂到已有站点的子路径下,是件看起来很简单的事:一个 index.html,一段 location,scp 上去,reload 完事。但真做的时候经常是打开 404,改一改又变成 403。这篇把排查顺序记下来,下次不用从头试。


一、先分清 404 还是 403




404 表示 Nginx 根本没把请求映射到某个文件;403 表示文件找到了,但 worker 进程读不了,或者目录里没有 index 文件又不允许列目录。两者原因完全不同,先拿状态码再动手,比在浏览器里反复刷新有效得多——浏览器还有缓存和 Service Worker 干扰。


二、404 多数是 alias 和 root 用错


root 是把 location 的路径拼到磁盘目录后面,alias 是直接替换,所以结尾斜杠必须对齐:




location 以 / 结尾,alias 也必须以 / 结尾。少一个斜杠,/demo/index.html 会被拼成 /data/www/hc-demoindex.html,必然 404。单页应用还要补 try_files,让刷新子路由不至于落到空白:




三、403 基本都是权限


worker 一般以 nginx 或 www-data 身份运行,它需要对整条路径都有 x 权限,对文件有 r 权限。最常见的坑是目录放在 /root 或 /home 下,中间某一层被建成 700。一条命令就能看出来:




把路径链统一成 755、文件 644,再 nginx -t && nginx -s reload 就行,reload 不会断开现有连接。


四、别漏了安全组


本机 curl 通、外面打不开,那就不是 Nginx 的事:ss -tlnp | grep :80 确认在监听,再去控制台看安全组有没有放行 80。


最后一句提醒:机器上如果已经有别的服务占着 80/443,不要顺手改它的配置去塞静态文件,单独加一个 location 或换个子路径更安全——线上改错一行,整站都挂。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。