nginx 的 root 指令配合绝对路径需以 / 开头写完整路径,如 root /var/www/html;它将请求 uri 拼接到该路径后查找文件,末尾不加斜杠,含空格时用双引号包裹,切勿与 alias 混用。

Nginx 的 root 指令配合绝对路径写法很简单:直接在 root 后面写以 / 开头的完整路径,不加引号(除非路径含空格等特殊字符)。
例如:
server {
listen 80;
server_name example.com;
location / {
root /var/www/html; # 这就是绝对路径写法
index index.html;
}
}
这里 /var/www/html 是绝对路径,Nginx 会把请求 URI 拼接到这个路径后面。比如访问 /images/logo.png,Nginx 实际查找的文件是 /var/www/html/images/logo.png。
注意几个关键点:
-
root指令定义的是基础目录前缀,不是最终文件路径 - 路径末尾不要加斜杠
/(加了也不会错,但 Nginx 会自动标准化,建议省略) - 如果路径含空格或特殊符号,需要用双引号包裹,如
root "/opt/my site/app"; - 绝对路径必须从根
/开始,相对路径(如html/)会被视为相对于 Nginx 配置文件所在目录,通常不推荐
常见误区:
- 把
root和alias混用:alias是直接替换 location 路径,root是拼接路径 - 在
location中误写成root /var/www/html/;(末尾斜杠多余) - 用相对路径却没意识到它相对于 Nginx 二进制启动目录(通常是
/usr/local/nginx),容易出错
如果想让 /api/ 指向 /data/api,应该用 alias:
location /api/ {
alias /data/api/; # 注意 alias 后路径末尾要加 /
}
而用 root 就得这样写(不推荐用于这种映射):
location /api/ {
root /data; # 请求 /api/file.json → 查找 /data/api/file.json
}
不复杂但容易忽略











