转:http://www.tech126.com/nginx-location-rule/
Nginx的Location可以有以下几个匹配:
1. = 严格匹配这个查询。如果找到,停止搜索。
2. ^~ 匹配路径的前缀,如果找到,停止搜索。
3. ~ 为区分大小写的正则匹配
4. ~* 为不区分大小写匹配
例子:
location = / {
# matches the query / only.
# 只匹配 / 查询。
[ configuration A ]
}
location / {
# matches any query, since all queries begin with /, but regular
# expressions and any longer conventional blocks will be
# matched first.
# 匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配。
[ configuration B ]
}
location ^~ /images/ {
# matches any query beginning with /images/ and halts searching,
# so regular expressions will not be checked.
# 匹配任何已 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。
[ configuration C ]
}
location ~* ".(gif|jpg|jpeg)$ {
# matches any request ending in gif, jpg, or jpeg. However, all
# requests to the /images/ directory will be handled by
# Configuration C.
# 匹配任何已 gif、jpg 或 jpeg 结尾的请求。然而所有 /images/ 目录的请求将使用 Configuration C。
[ configuration D ]
}
如果要定义多个location,则可以有2种方式:
- 使用/ :location / { client_max_body_size 200m; proxy_connect_timeout 30; proxy_set_header Host $http_host; proxy_set_header x-forwarded-for $remote_addr; proxy_pass http://127.0.0.1:8008; } location /tmp/{ root /; internal; } 采用这种方式,/tmp可以放在/的下面,因为“/是匹配任何查询,但是正则表达式规则和长的块规则将被优先和查询匹配”
- 使用~ /* : location ~ /tmp/ { root /tmp; internal; } location ~ /* { client_max_body_size 20m; proxy_connect_timeout 30; fastcgi_pass fpass; include fastcgi_params; } 采用这种方式,/tmp则必须放在~ /*这个前面,因为~是正则匹配的,正则匹配是有顺序的,只要匹配上就不会再往下匹配了。除非在conf中有定义=或者^~,也就是说=和^~的优先级最高,如果匹配上,就不会再去匹配其它的规则了。
总之,引用Nginx的官方文档的匹配规则:
- Directives with the = prefix that match the query exactly. If found, searching stops.
- All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.
- Regular expressions, in order of definition in the configuration file.
- If #3 yielded a match, that result is used. Else the match from #2 is used.
注意:正则表达式的匹配是有顺序的,按顺序匹配。其它的匹配理论上讲是只有优先级,而没有顺序的。
相关推荐
Nginx配置指令location匹配符优先级和安全问题详解Nginx location 匹配规则Nginx服务器的location指令匹配规则详解利用nginx如何匹配多个条件Nginx location匹配规则的方法示例简介Nginx中的location匹配规则nginx ...
Nginx的location匹配规则非常灵活和强大,可以实现精确匹配、前缀匹配、正则表达式匹配等多种方式。在配置Nginx服务器时,了解location匹配规则的方法至关重要。 location块中的匹配规则可以根据不同的符号进行分类...
语法规则 location [=|~|~*|^~] /uri/ { … } 模式 含义 ...location = /uri = 表示精确匹配,只有完全匹配上才能生效 ...location ^~ /uri ...通用匹配,任何未匹配到其它location的请求都会匹配到,相当于swit
**Nginx中的Location匹配规则详解** 在Nginx服务器配置中,`location`指令是核心部分之一,用于处理HTTP请求。它根据指定的规则来匹配URL,从而决定如何处理客户端的请求。本文将深入探讨Nginx `location`的匹配...
Nginx 服务器和 Location 匹配规则 Nginx 配置文件主要由 events、http、server、location、upstream 等块配置项和一些行配置项组成。Server 块匹配规则是 Nginx 配置文件中的一部分,对虚拟主机的相关参数进行配置...
- **普通 location** 的匹配规则遵循“最大前缀匹配”原则,即优先选择与请求 URI 最大程度匹配的 location 块。 - **正则 location** 的匹配规则是按照配置文件中的先后顺序来进行匹配的,一旦某个正则表达式匹配...
学习location匹配规则对于理解如何在Nginx中配置服务器和优化网站性能至关重要。 location指令有多种匹配方式,具体包括精确匹配(=)、正则表达式匹配(~和~*)、最前缀匹配(^~)以及前缀匹配。它们都遵循特定的...
### Nginx Location配置详细解析 #### 一、引言 Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 Linux 环境下有着非常好的性能表现。在 Nginx 的配置文件中,`location` ...
- 访问 `/login` 会匹配规则 B,而 `/register` 会匹配规则 H。 - 访问 `/static/a.html` 会匹配规则 C。 - 图片请求如 `/a.gif` 和 `/b.jpg` 会匹配规则 D,但顺序优先,规则 E 不起作用。`/static/c.png` 匹配...
location匹配命令 ~ #波浪线表示执行一个正则匹配,区分大小写 ~* #表示执行一个正则匹配,不区分大小写 ^~ #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 = #进行普通...
因此,了解`location`的匹配规则至关重要。 **2. `location`匹配规则** `location`的匹配规则主要基于以下几种类型: - **精确匹配 (`=`)**: 使用`=`开头表示精确匹配,只有URI与表达式完全一致时才会匹配成功。 ...
2. **前缀匹配**:如果精确匹配未找到,Nginx会尝试前缀匹配(`location /pattern`)。按配置文件中的顺序依次检查,一旦找到匹配项,就进入下一步。 3. **正则匹配**:如果前缀匹配也未找到,Nginx将按照正则表达式...
Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的”/uri/”,可以是字符串或正则表达式。但如果要使用正则表达式,则必须指定前缀。 nginx ...
Nginx会按顺序从上到下尝试每个正则表达式,一旦找到匹配的,就执行对应的`location`,并停止进一步的正则匹配。 - `location ~* regex`:不区分大小写的正则匹配。与上面的规则相同,只是不考虑字符的大小写。 ...
当有匹配成功时候,停止匹配,按当前匹配规则处理请求。 示例 下面是一些示例 Location 规则: ``` location = / { ... } # 精确匹配根目录 location = /login { ... } # 精确匹配 /login location ^~ /static/ { ...
NGINX 中的 location directive 是一个非常重要的配置指令,它可以根据不同的 URL 模式来匹配不同的请求路径。但是,location 的配置顺序并不是固定的,而是根据 Location 表达式的优先级来决定的。 Location ...