Nginx 默认HTML根目录由配置中root指令决定,非内建路径;常见路径为Ubuntu/Debian的/var/www/html、CentOS/RHEL的/usr/share/nginx/html、macOS Homebrew的/usr/local/var/www;修改时应更新root值并确保权限与SELinux策略允许访问。

Nginx 默认不会自动查找或“猜测” HTML 文件位置,它的静态资源(包括 HTML)存放路径完全由配置文件中 root 或 alias 指令决定。所谓“默认存放规则”,其实是 Nginx 安装后示例配置所采用的路径,并非内建硬编码路径。
默认 HTML 根目录通常在哪?
多数 Linux 发行版安装 Nginx 后,主配置文件(如 /etc/nginx/nginx.conf 或 /etc/nginx/sites-enabled/default)中会包含类似这样的 server 块:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html; # ← 这就是默认 HTML 根目录
index index.html index.htm;
}常见默认路径有:
- Ubuntu/Debian:/var/www/html
- CentOS/RHEL/Rocky/AlmaLinux:/usr/share/nginx/html
- macOS(Homebrew):/usr/local/var/www
注意:root 指定的是“根路径前缀”,请求 GET /about.html 时,Nginx 实际查找的是 root + URI → /usr/share/nginx/html/about.html。
立即学习“前端免费学习笔记(深入)”;
如何安全更改 HTML 存放目录?
修改关键在于更新 root(推荐)或 alias(仅用于特定 location),并确保权限与 SELinux(如启用)允许访问:
- 编辑对应 server 或 location 块,把
root改为你的目标路径,例如:root /home/www/my-site; - 确保该目录存在,且 Nginx 工作用户(通常是
www-data或nginx)有读取权限:sudo chown -R $USER:www-data /home/www/my-sitesudo chmod -R 755 /home/www/my-site - 若用 SELinux(CentOS/RHEL),需打标:
sudo semanage fcontext -a -t httpd_sys_content_t "/home/www/my-site(/.*)?"sudo restorecon -Rv /home/www/my-site - 重载配置生效:
sudo nginx -t && sudo systemctl reload nginx
root 和 alias 的区别与选用建议
二者都可指定文件路径,但行为不同,误用会导致 404:
-
root:拼接整个请求 URI。
→root /data;+ 请求/static/js/app.js→ 查找/data/static/js/app.js -
alias:替换匹配的 location 路径部分。
→location /static/ { alias /opt/assets/; }+ 请求/static/logo.png→ 查找/opt/assets/logo.png(注意末尾斜杠) - 对根站点 HTML,始终优先用
root;alias适合映射子路径到独立目录(如 CDN 静态资源)
验证是否生效的快速方法
改完配置别急着重启,先做三步检查:
- 运行
sudo nginx -t确认语法无误 - 用
curl -I http://localhost查看响应头中的Server和状态码,排除 502/500 - 手动访问一个已知 HTML 文件(如
curl http://localhost/test.html),确认返回内容正确,且 Nginx 日志(/var/log/nginx/error.log)无 “Permission denied” 或 “No such file” 错误

















