前言:
而今姐妹们对“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中的配置,如果不写,同时存在通配符,它会优先寻找通配符的内容