前言
location 指令是http模块中非常重要的配置指令之一,Location是Nginx中的块级指令(block directive),通过配置Location指令块,可以决定客户端发过来的请求URI如何处理(是映射到本地文件还是转发出去)及被哪个location处理
server {
listen 80;
server_name localhost;
location / {
}
location /abc{
}
...
}
location
用来设置请求的
URI
配置策略
- uri变量是待匹配的请求字符串,可以不包含正则表达式,也可以包含正则表达式;
- nginx服务器在搜索匹配location的时候,是先使用不包含正则表达式进行匹配,找到一个匹配度最高的一个,然后在通过包含正则表达式的进行匹配;
- 如果能匹配到直接访问,匹配不到,就使用刚才匹配度最高的那个location来处理请求;
具体属性介绍
1、不带符号
要求必须以指定模式开始
server {
listen 80;
server_name 127.0.0.1;
location /abc {
default_type text/plain;
return 200 "access success";
}
}
在这种情况下,只要是以 /abc开头的都能被匹配到,以下访问都是正确的
http://IP/abchttp://IP/abc?p1=TOMhttp://IP/abc/http://IP/abcdef
2、“= ”
= :用于不包含正则表达式的uri前,必须与指定的模式精确匹配
server {
listen 80;
server_name 127.0.0.1;
location = /abc {
default_type text/plain;
return 200 "access success";
}
}
在这种情况下,访问的路径必须是以 /abc开头才能正确被访问,如下是正常的,
但是如果换成其他的路径,就不对了
3、“~ ”
- ~ : 用于表示当前uri中包含了正则表达式,并且区分大小写 ~*: 用于表示当前uri中包含了正则表达式,并且不区分大小写;
- 换句话说,如果uri包含了正则表达式,需要用上述两个符合来标识;
配置案例
server {
listen 80;
server_name 127.0.0.1;
location ~^/abc\w$ {
default_type text/plain;
return 200 "access success";
}
}
server {
listen 80;
server_name 127.0.0.1;
location ~*^/abc\w$ {
default_type text/plain;
return 200 "access success";
}
}
^~:
用于不包含正则表达式的
uri
前,功能和不加符号的一致,唯一不同的是,如果模式匹配,那么就停止搜索其他模式了。
用于不包含正则表达式的
uri
前,功能和不加符号的一致,唯一不同的是,如果模式匹配,那么就停止搜索其他模式了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/143232.html