location匹配uri
默认时匹配/[location /]]
location:匹配的规则和优先级。
nginx:常用的变量,要求优先掌握
rewrite:重定向功能。掌握理解
location匹配
正则表达式:
元字符
. :任意单个字符,包括汉字 \.
^:起始位置
$:结束位置
*:匹配前面的字符0次或者多次
+:匹配前面的字符一次或者多次
?:一次或者0次
\:转义符
[0-9 a-z A-Z]:匹配0-9,匹配a-z,匹配A-Z
[a]:只能匹配a
{a}:;连续重复出现几次
{n,m}:最少出现几次,最多出现几次。
逻辑或: |
正则表达式:匹配的是文件内容,ls
URI:统一资源标识符,是一种字符串标识,用于标识抽象的或者物理资源
文件,图片,视频
nginx当中:uri
www.test.com/images/1.jpg
location就是用来匹配uri的:
1.精确匹配:location=/{...}
2.正则匹配:location ~/{...}
3一般匹配:location/ {...}
匹配的规则:
=:精确匹配,完全匹配,错一个字都匹配不上,必须完全一致
^-:匹配普通字符的,前缀匹配
-:区分大小写的匹配
-*:不区分大小写的匹配
!~:区分大小写的匹配,取的逻辑非,取反
!~*:不区分大小写的取反
-$:结束位置
location越精确越匹配(优先级越高)
匹配的优先级:
越精确,优先级越高
=优先级最高
-正则次之
/通用的优先级是最低的
优先级
location = 到 location ^ - 到location ~ * 到location/test/到location /
一旦匹配到就不会在向下匹配
1.第一个必选规则:
location=/{}
直接匹配根网站。通过域名访问网站页面是最多的。使用精确匹配,可以加快处理速度。首页
2.第二个规则
location ^ - /static/ {}
处理静态文件的请求,目录匹配,任选一个
3.location - * .(gif | jpg | png | css) 匹配图片使用的
4.通用规则
location / {
proxy_pass 指定代理,转发动态请求。 .php .jsp的请求,发送到后端。}
rewrite:重写,重定向
rewrite使用NGINX的全局变量或者是自己设置的变量,结合正则表达式和标志位实现url的变量
default_type text/plain;
表示如果没有在其他地方显示设置:content-type的头字段,默认响应为text/plain;纯文本格式
text/html:默认的响应类型,也就是我们说的页面
text/plain:纯文本格式,类似于.txt文件
text/css:css样式表的类型。.csss
text/JavaScript:java的脚本,.js。前端文件,也可以理解是Java解析的程序文件
rewrite执行顺序:
1.执行server快当中的rewrite的
2.执行location匹配
3.如果location当中还有rewrite,继续执行
不停止rewrite,就会进入死循环铭智能十次,然后报错,报错的状态码是500
rewrite的语法:
rewrite <regex> <replacemnet> [flag]
以rewrite:开始重定向
regex:正则匹配的规则
replacement:表示跳转后的内容,你要重定向的url
flag:标志位
permanent:永久重定向:返回码是301
redirect:临时重定向,显示的返回码是302
永久重定向:302,用于短期变更(网站维护,或者升级更新)
搜索引擎时不时转移权重和排名列到新的url
304表示获取的是本地缓存
break:是重定向,但是不会改变url,而且只会请求一次即可停止。
last:负责匹配完成后,继续向下匹配,只要有last,就继续匹配。配置的时候需要注意,防止死循环