龙空技术网

Nginx的location指令

零一小李 226

前言:

而今姐妹们对“nginx location作用”大体比较注重,兄弟们都想要知道一些“nginx location作用”的相关内容。那么小编也在网络上搜集了一些关于“nginx location作用””的相关资讯,希望朋友们能喜欢,朋友们一起来学习一下吧!

本文讨论,发送请求,映射server路径的情况,具体是由于在server块中存在着,可以写入多个location的情况,这时候请求,到底是想要找location中的中那一个

server{ listen 9090; server_name localhost; location / { } location /xxxx{ } }

location的语法配置是非常灵活的,它可以支持六种方式的配置

第一种:不带任何符号的 [

第二种是使用 = 精确匹配

第三种是使用 ~ 正则表达式

第四种是使用 ~*

第五种是使用 ^~

第五种是使用 @ 符号

location作为请求的URL,只能配置在server和location当中

先介绍不带任何符号:

不带符号,要求必须以指定模式开始,什么是指定模式呢?下面进行介绍

先将之前的ngnix.conf文件更名为nginx_server_order.conf文件

cp nginx.conf.default nginx.conf

使用nginx.conf文件,重新构建nginx.conf文件

再之后,使用vim命令,打开ngnix.conf文件

先简单配置一个通往/abc路径的,

配置完成之后,通过ip/abc就能够访问到刚才设置的内容了

同时访问/abcdef也可以进行访问到,指定模式就是模糊匹配的意思,只要前面带了/abc都能够访问到

如果想要实现精确匹配,就要在location的后面写成 =/abc这种写法

之后就无法进行精确匹配了

如果使用?拼接是可以正常进行访问的

第三种是使用 ~ 正则表达式的意思,如果想使用正则表达式,只要在location后面添加~/abc就可以了

如下文的~^/abc\w$代表的开头是abc,/w是任意字符,$是结尾的意思

结尾输入abc_是可以访问到的,输入/不可以访问到

这里出现了一个情况,即使输入了ABcd大写的写法,依然能够访问到

这是因为浏览器的缓存导致的,解决方法是点击历史记录

点击清空浏览器的数据

这一次访问ABcd是不能进行访问的,Ngnix默认是不支持大小写匹配的,如果想要设置支持

只要在正则~的后面加一个*号就可以支持正则匹配;

这一次大写就可以访问成功了

还有一种模式:

^~ 这种模式是什么意思?

这里是针对一种情况,它访问abcd,/abcd和~*^abc\w$结尾都能够进行匹配

这里它会首先匹配~*^abc\w$的内容

这里^~是什么意思,写在/前面有什么意义

这一次返回的是携带abc的内容,^~的意义是只要在输入路径的时候,正好等于location中编写的路径,匹配成功了,它就找它,不再去找其他location中的配置,如果不写,同时存在通配符,它会优先寻找通配符的内容

标签: #nginx location作用 #nginx中location的作用