alias指令可将URL路径映射到另一磁盘目录以缓解空间不足,其核心是精准替换location前缀拼接路径,需严格匹配斜杠、设置正确权限并验证配置。

当网站静态资源(如图片、视频、日志归档等)持续增长,导致 Nginx 所在磁盘空间不足时,alias 指令可将特定 URL 路径“映射”到另一块富余空间的磁盘目录,无需迁移整个站点或修改应用代码。
alias 的核心作用:URL 到文件系统的精准重定向
alias 不是重写(rewrite),也不是代理(proxy_pass),它直接替换 location 匹配路径的前缀,拼接后形成最终的磁盘文件路径。关键点在于:alias 后的路径必须是完整的目标目录绝对路径,且不自动补斜杠。
- 错误写法:
alias /data/static/;+ 请求/static/logo.png→ 实际查找/data/static//logo.png(双斜杠易出错) - 正确写法:
alias /data/static;(结尾无斜杠)+ 请求/static/logo.png→ 查找/data/static/logo.png - 若 location 带尾部斜杠(如
location /static/),alias 值也应为无尾斜杠的完整路径
典型配置示例:把 /uploads 映射到大容量挂载盘
假设你新增了一块磁盘挂载在 /mnt/data,想把所有上传文件(原在 /var/www/site/uploads)交由它服务:
location /uploads/ {
alias /mnt/data/uploads/;
# 注意:此处 alias 结尾有斜杠,因为 location 也有尾部斜杠
# 请求 /uploads/photo.jpg → 实际读取 /mnt/data/uploads/photo.jpg
expires 1h;
add_header Cache-Control "public";
}⚠️ 特别注意:alias 和 root 容易混淆——root 是拼接整个 URI,alias 是替换 location 路径部分。用错会导致 404 或读错文件。
配合权限与安全控制避免风险
新路径目录需被 Nginx 工作进程(如 www-data 或 nginx 用户)读取,否则返回 403:
- 执行
chown -R www-data:www-data /mnt/data/uploads - 确保父目录(如
/mnt/data)至少有rx权限,否则无法进入 - 若仅提供静态文件,禁用执行权限:
find /mnt/data/uploads -type f -exec chmod 644 {} \; - 可在 location 内加
deny all;阻止访问敏感子目录(如/uploads/.git)
验证与调试技巧
配置后务必测试路径映射是否准确:
- 用
nginx -t检查语法,再nginx -s reload - 开启 Nginx 错误日志(
error_log /var/log/nginx/error.log debug;),查看是否出现 “open() “/mnt/data/…” failed (13: Permission denied)” - 用
curl -I http://yoursite/uploads/test.jpg检查状态码和响应头 - 临时在目标目录放一个测试文件,确认路径拼接逻辑符合预期
不复杂但容易忽略细节。只要 location 和 alias 的斜杠匹配、权限到位、日志开着,就能稳稳把压力从系统盘卸到扩展盘上。










