Nginx 中 root 指令和 alias 指令的区别

NDIS herman 403浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

我们在配置 Nginx 时,往往会参考网上的一些文章。同时有时候,也会看一些 Nginx 的视频教程。但是你会发现,A 文章中的配置使用的是 root,B 文章中的配置使用的是 alias。那么这两个参数到底是有什么区别呢?今天我们一起来说一说。

看到这篇文章,我相信有些人是不愿意的。你个开发的怎么老扯运维?

哎,说实话啊,其实我也不想搞,但是你不搞你就得下课。为什么呢?因为在国内是分不清这是谁的工作,哪是谁的工作的?你搞后端的,你前端得会一点吧,你得学点运维吧,甚至有人还想让你会点硬件知识吧。说实话,我学运维也是被逼的。谁他妈不想休息,不想玩呢?

Nginx 配置教程

有句话不是说的好,人人是运维,无人是运维。

好了,废话少扯,回到主题。

Nginx 指定文件路径有两种方式 root 和 alias,它们两个指令的使用方法和作用域分别如下。

[root]
语法:root path
默认值:root html
配置段:http、server、location、if

[alias]
语法:alias path
配置段:location

除了配置段不一样外,root 与 alias 主要区别在于 nginx 如何解释 location 后面的 uri,这会使两者分别以不同的方式将请求映射到服务器文件上。

root 的处理结果是:root 路径+location 路径。

alias 的处理结果是:使用 alias 路径替换 location 路径。

从上面,也可以看出,alias 是一个目录别名的定义,root 则是最上层目录的定义。

还有一个重要的区别是 alias 后面必须要用“/”结束,否则会找不到文件的。而 root 则可有可无。alias 只能位于 location 块中,而 root 可以在 location 指令块外。

下面看一个简单的例子。

location /xttblog/ {
    alias /www/xttblog/;
}

上面这个配置,当访问 /xttblog/ 目录时,Nginx 会去 /www/test/ 目录找文件。

location /xttblog/ {
    root /www/xttblog;
}

按照这种配置,则访问 /xttblog/ 目录下的文件时,nginx 会去 /www/xttblog/xttblog/ 目录下找文件。即,root 会使 Nginx 去找 root 后面的路径 + location 上配置的路径。“/www/xttblog/xttblog/” = “/www/xttblog” + “/xttblog/”。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » Nginx 中 root 指令和 alias 指令的区别