首页>>帮助中心>>高防服务器nginx location块配置

高防服务器nginx location块配置

2024/9/2 136次

高防服务器nginx location块配置


nginx可以通过配置文件中的location指令来定义不同的请求匹配规则和处理逻辑,也就是描述不同请求资源在服务器的位置或者配置代理转发路径
location块通常在server块中,一个server块可以包含多个location块。
server { location {} location {} } 语法规则: location [ = | ~ | ~* | ^~ ] uri { ... }
其中[]位置是设置匹配方式符号,有以下几种情况
none: 字符串前缀匹配,会继续往后进行正则匹配
=: 代表精确匹配,命中后立即结束返回
~: 正则匹配,区分大小写
~*: 正则匹配,不区分大小写
^~: 最长非正则表达式匹配(字符串匹配)。如果请求的URI命中这样的位置块,则不会进行进一步的匹配
uri就是表示的资源路径标识。
location配置既可以由前缀字符串定义,也可以由正则表达式定义。为了找到匹配给定请求的location,nginx首先检查使用前缀字符串定义的位置(前缀匹配)。选择匹配前缀最长的位置并记住。然后按照正则表达式在配置文件中的出现顺序依次进行正则匹配。正则表达式的搜索在第一次匹配时终止,并使用相应的配置。如果没有找到与正则表达式的匹配,则使用先前记住的前缀匹配的配置。
下面来依次看下对应的匹配
精确匹配
location = /test{ return 200 "= /test"; } 这种方式访问只匹配/test,访问/test/1这种就会报404错误
前缀匹配
location /test{ return 200 "/test"; } 这种可以匹配前缀进行匹配,像 /test-a,/test/a 都可以匹配到
正则匹配
在 location /test基础上添加如下正则匹配
location ~ /test[0-9] { return 200 "reg[0-9]"; } 请求test1地址会落到该正则匹配地址,这个时候访问/testa 会落到上面的前缀匹配location /test里。这也说名了**前缀匹配不会直接结束,会继续找下一个匹配的正则匹配,如果找到则访问正则匹配的location,否则进入前缀匹配**。
在前面的配置基础上,再加一个正则配置location ~ /test*
location = /test{ return 200 "= /test"; } location /test{ return 200 "/test"; } location ~ /test[0-9] { add_header Content-Type "text/plain"; return 200 "reg[0-9]"; } location ~ /test* { return 200 "test*"; }
这个时候访问/test1还是会进入/test[0-9]的配置,虽然后面的/test*也匹配,这里证明正则匹配只要匹配到一个后便立即结束。
正则匹配有两种 location ~ 表示区分大小写,location ~* 表示不区分大小写。不区分大小写这里就不演示了。
下面还有最后一种格式location ^~。这种也是字符串前缀匹配,不过这种区分于默认字符串匹配的方式是,如果当前location ^~字符串前缀匹配,会立即结束,不会再继续往下查找正则匹配。
还是搞个例子来看下,添加一个^~配置,此时配置如下:
location = /test {} location /test {} location ^~ /test1 {} location ~ /test[0-9] {} location ~ /test* {}
此时如果访问/test1则会直接进入location ^~ /test1,虽然后面的正则匹配location ~ /test[0-9]也可以匹配,但是
先遇到location ^~ /test1匹配后就直接结束了。
配置location还有一点需要注意,nginx会检查location规则不能重复。像location /test和location ^~ /test虽然规则符号不同,但是也被认为是相同的location。一般情况下会配置一个 location /来兜底所有的请求。正则匹配也是经常用的一种配置方式,如location ~ .jpg$可以匹配所有的jpg图片文件请求,location ~ ^/user/\\d+可以匹配所有以/user/[用户ID]开头的请求。

购买使用一诺网络国内高防服务器,可以极大降低初创企业、中小企业以及个人开发者等用户群体的整体IT使用成本,无需亲自搭建基础设施、简化了运维和管理的日常工作量,使用户能够更专注于自身的业务发展和创新。电信高防服务器低至259元/月,购买链接:https://www.enuoidc.com/vpscn.html?typeid=5