Nginx之location模块说明

眼前多少难甘事,自古男儿当自强。这篇文章主要讲述Nginx之location模块说明相关的知识,希望能为你提供帮助。

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 这条规则上。

【Nginx之location模块说明】location匹配的是nginx的$request_uri变量。

    推荐阅读