Nginx Location 配置讲解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx Location 配置讲解相关的知识,希望对你有一定的参考价值。
参考技术A Location 是 nginx 中一个非常核心的配置,这篇重点讲解一下 Location 的配置问题以及一些注意事项。关于 Location,举个简单的配置例子:
大致的意思是,当你访问 www.yayujs.com 的 80 端口的时候,返回 /home/www/ts/index.html 文件。
我们看下 Location 的具体语法:
location [ = | ~ | ~* | ^~ ] uri ...
重点看方括号中的 [ = | ~ | ~* | ^~ ] ,其中 | 分隔的内容表示你可能会用到的语法,其中:
而当你不使用这些语法的时候,只写 uri 的时候:
/ 表示通用匹配:
当存在多个 location 的时候,他们的匹配顺序引用 Nginx 官方文档 就是:
翻译整理后就是:
location 的定义分为两种:
而匹配 location 的顺序为:
再总结一下就是:
在顺序上,前缀字符串顺序不重要,按照匹配长度来确定,正则表达式则按照定义顺序。
在优先级上, = 修饰符最高, ^~ 次之,再者是正则,最后是前缀字符串匹配。
我们举几个简单的例子复习下:
当我们这样设置 root 的时候:
当请求 /i/top.gif , /data/w3/i/top.gif 会被返回。
当我们这样设置 alias 的时候:
当请求 /i/top.gif , /data/w3/images/top.gif 会被返回。
乍一看两者很像,但细一看,就能看出两者的区别,root 是直接拼接 root + location 而 alias 是用 alias 替换 location ,所以 root 中最后的路径里有 /i/ ,而 alias 中最后的路径里没有 /i/ 。
所以如果你这样使用 allias 定义一个路径:
其实使用 root 会更好:
server 和 location 中都可以使用 root,举个例子:
如果两者都出现,是怎样的优先级呢?
简单的来说,就是就近原则,如果 location 中能匹配到,就是用 location 中的 root 配置,忽略 server 中的 root,当 location 中匹配不到的时候,则使用 server 中的 root 配置。
以上是关于Nginx Location 配置讲解的主要内容,如果未能解决你的问题,请参考以下文章