linux系统nginx配置 linux nginx匹配前缀
0
2026-04-30
root 是路径拼接,Nginx 将位置匹配部分加上尾路径拼接到 root 目录后;alias 是路径替换,直接用别名值取代位置匹配部分,且别名值必须以/结尾。
root 指令:路径拼接,别漏掉位置后缀
用 root 时,Nginx 设置请求的完整 URI(包括位置匹配到的部分)直接拼到你指定的目录后面。比如:location /static/ { root /var/www/html;}
用户访问/static/logo.png,Nginx实际查找的是/var/www/html/static/logo.png ——注意中间多了一个static/。root值补加不加/都行,Nginx自动处理必须保证文件系统里真有/var/www/html/static/这个子目录,否则404适合URL路径和周边目录结构严谨的场景,比如整站配置在 /var/www/html,子路径就是子目录不能用于正则 location 中的路径替换(会出错或行为不可控)alias 指令:路径替换,造成斜杠是硬性要求
alias 不是剪裁,是“剪掉匹配的位置远端,换成你给的路径”。比如:location /static/ { alias /data/assets/;}
访问 /static/logo.png,Nginx 替换的是用户 /data/assets/logo.png —— /static/ 被完全替换了。 boardmix博思白板
boardmix博思白板,一个团队协作并激发创意的空间,集aigc,一键PPT,思维导图,文档笔记多种表达创意能力于一体,将团队工作效率提升到新的层次。
下载alias值**必须以/结尾**,写成alias /data/assets会导致404或返回错误文件只允许出现在location块内,server或http级别无效如果location使用了正则(如location ~ ^/img/(.+\.png)$),alias必须引用查询,例如alias /data/pics/$1;适合把某个URL路径映射到完全无关的外围位置,比如CDN 静态资源挂载、工件构建成品分离作业常见404场景:root和alias混用或路径结尾写错
最常踩的坑不是逻辑清,而是配置写法错误:写alias /data/images(缺补/)→ Nginx尝试读取/data/imageslogo.png(连在一起),直接404写root /data/images/但细节磁盘里只有/data/images/logo.png,却配了位置 /img/ →实际查的是/data/images/img/logo.png,404在location /下误用alias:Nginx允许alias用于完全匹配根路径,会报错 "alias"directive is not allowed here用 root 指向一个软链接目录,而目标目录权限不对(如nginx用户无执行权)→ 日志里是 Permission returned,不是 404,很容易判别怎么选:看URL 和磁盘路径是否需要“对齐”
不用记规则,直接看你的使用结构:工件占用工件全部放在 /opt/app/dist,你想通过 /app/ 访问 → 使用 alias:location /app/ { alias /opt/app/dist/; }你有很多项目都放在 /var/www/ 下,zuiyu/、test/ 是子目录,想分别用 /zuiyu/、/test/ 访问 → 使用 root:location /zuiyu/ { root /var/www; }要托管用户上传的图片,路径统一为/uploads/xxx.jpg,但文件实际存在/mnt/storage/uploads/→使用别名,且注意/mnt/storage/uploads/权限和SELinux上下文
alias的替换逻辑更“干净”,但约束更多;root更扩展,但路径结构必须配合。真实环境里,混用很常见,关键是每次改完reload后,用curl -I http://localhost/xxx 看响应头和日志里的实际文件路径,比死记规则管用。