Nginx之location模块说明

Posted 风的影子001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx之location模块说明相关的知识,希望对你有一定的参考价值。

Nginx之location模块说明_web

nginx由内核和模块组成,location是Nginx配置中的一个指令,用于访问的URL匹配。location 是在 server 块中配置,用来通过匹配接收的uri来实现分类处理不同的请求。

location [ = | ~ | ~* | ^~ ] uri  ... 
= --- 精确匹配网站uri资源信息
~ --- 区分大小写匹配网站uri资源信息
~* --- 不区分大小写匹配网站uri资源信息
^~ --- 优先匹配网站uri资源信息
/image/ --- 指定匹配网站资源目录信息
/ --- 默认匹配网站资源信息
! --- 对匹配的内容进行取反
^~ 对URI的最左边部分做匹配检查,不区分字符大小写
~ 对URI做正则表达式模式匹配,区分字符大小写
~* 对URI做正则表达式模式匹配,不区分字符大小写

匹配优先级从高到低:
精确匹配(=)、^~、~、~*、不带任何符号的location

=、^、/属于普通字符串匹配,Location 、~*属于正则表达式匹配,Location优先级与其在Nginx.conf配置文件中的先后顺序无关。

Location规则匹配优先级

(location =) > (location 完整路径) > (location ^~ 路径) > (location ~|~* 正则顺序) > (location 部分起始路径) > (location  /)

1、location先进行"="或"完整路径"的精确匹配,如:location =/www/index.html

2、^~字符串匹配,如: location ^~ /flv/

3、~和~正则匹配,如: location ~ .(html|css)$

4、目录或部分起始路径匹配,如: location /image/

5、默认匹配 location /

官方案例

location = / 
[ configuration A ] --- 优先级最高 1 精确匹配


location / --- 所有匹配都不满足时候,优先级最低,匹配默认location 5
[ configuration B ]


location /documents/ --- 根据资源目录进行匹配 4 目录或部分路径匹配
[ configuration C ]


location ^~ /images/ --- 优先匹配 2 字符串匹配
[ configuration D ]


location ~* \\.(gif|jpg|jpeg)$ --- 不区分大小写匹配网站资源 3 正则匹配
[ configuration E ]

实验配置

"="  精确匹配

请求要和表达式一致才匹配成功

location = / 
.....

# 只匹配http://abc.com
# http://abc.com [匹配成功]
# http://abc.com/index [匹配失败]

"~"  大小写敏感

location ~ /Example/ 
.....

#http://abc.com/Example/ [匹配成功]
#http://abc.com/example/ [匹配失败]

"~*"   大小写忽略

location ~* /Example/ 
.....

# 则会忽略 uri 部分的大小写
#http://abc.com/test/Example/ [匹配成功]
#http://abc.com/example/ [匹配成功]

"^~"  只匹配以 uri 开头

location ^~ /index/ 
.....

#以 /index/ 开头的请求,都会匹配上
#http://abc.com/index/index.page [匹配成功]
#http://abc.com/error/error.page [匹配失败]

"@"  nginx内部跳转

location /index/ 
error_page 404 @index_error;

location @index_error
.....

#以 /index/ 开头的请求,如果链接的状态为 404。则会匹配到 @index_error 这条规则上。

location匹配的是nginx的$request_uri变量。

以上是关于Nginx之location模块说明的主要内容,如果未能解决你的问题,请参考以下文章

Nginx配置之location模块和proxy模块

nginx之location.md

Nginx-location模块

Nginx 指令之location

Nginx系列之反向代理相关模块

Nginx核心模块——HTTP中的配置指令location和rewrite介绍