Nginx之location模块说明
Posted 风的影子001
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 这条规则上。
location匹配的是nginx的$request_uri变量。
以上是关于Nginx之location模块说明的主要内容,如果未能解决你的问题,请参考以下文章