nginx中location的写法有哪些?优先级是什么呢?rewrite如何使用?

发布时间 2023-08-12 17:24:06作者: ღ᭄遇见你²⁰²²

主要内容:一、location匹配的规则和优先级(重点,面试会问,工作用得到)

二、nginx常用的问题(要求掌握)

三、rewrite:重定向功能(有掌握,有理解),重定向的标识位,标识位的四种类型是重点

在工作中配置nginx,主要配置location

location匹配:用正则表达式

URI:统一资源标识符,是一种字符串标识,用于标识抽象的或物理资源(文件,图片,视频)

nginx中uri是www.ky30.com/mages/1.jpg中的/mages/1.jpg

一、location匹配的规则和优先级(重点,面试会问,工作用得到)
location就是用来匹配uri的:1、精确匹配:location =/{......}

2、正则匹配:location ~ /{......}

3、一般匹配:location / {......}

匹配的规则:

=:精确匹配,完全匹配,错一个字都匹配不到,必须完全一致

^~:匹配普通字符,但是是前缀匹配

~:区分大小写的匹配

~*:不区分大小写的匹配

~$:结束位置

!~:区分大小写的匹配 逻辑或,取反

!~*:不区分大小写,也是取反

总结:掌握 = ^~ ~ 和 !~*

location匹配原则:越精确越匹配,优先级越高

匹配的优先级:越精确,优先级越高

= ~ /

精确匹配优先级最高,正则次之,通用的优先级最低

总结:优先级由高到低排序

location =(完全匹配) location ^~(匹配普通字符) location ~*(不区分大小写) location /tast/ 标明路径的通用匹配 location /(一般通用)

一旦匹配到了location 不再向下匹配 location匹配的是uri

生产中的location匹配规则:

1、第一个必选规则location = /{ } 直接匹配根网站,因为通过域名访问网站首页是最多的

使用精确匹配可以加快处理速度。相当于首页,用于首页访问

2、第二个规则:location ^~/static/ { } 处理静态文件的请求,目录匹配

3、第三个规则:location ~*.(gif|jpg|png|css) 正则匹配,匹配图片用的

4、第四个规则:

location / {

proxy_pass 指定代理服务器,反向代理,转发动态请求,php或jsp这样的请求发到后端

}

面试会问:1、匹配的类型 精确匹配 正则匹配 一般匹配

2、匹配的优先级 精确匹配优先级最高,正则次之,通用的优先级最低

三、rewrite
面试会问:重定向的标志位是什么,怎么写了解一下即可,在工作中基本不会写

rewrite:重写,重定向 rewrite使用nginx的全局变量或者是自己设置的变量,结合正则表达式和标识位实现url的重定向

例:

location / {

root html;

index html index htm;

default_type text/plain;查询的结果会以文本的格式直接返回在页面上

return 200 "(lport:$remote-port)";

}

核心:x-forwarded-for:原始ip

x-Real-Ip:真实Ip

掌握:default_type text/plain:表示如果没有在其他地方显示设置:content-type的头字段,默认响应为text/plain 纯文本格式

了解:text/html:默认的响应类型就是页面

text/plain:纯文本格式,类似于.txt文件

text/css:CSS样式表的类型,CSS

tecxt/javascript:java的脚本,js:前端文件,也可以理解为是java解析的程序文件

rewrite的执行顺序:1、先执行server块中的rewrite

2、执行location匹配

3、如果location当中还有rewrite,继续执行,不停的rewrite就会陷入死循环,只能10次,然后报错,报错状态码为500

rewrite的语法:rewrite <regex> <replacement> [flag]

解释:rewrite:开始重定向 regex:正则匹配的规则 replacement:跳转后的内容,要重定向的url flag:标志位

flag标志位有四种类型:

1、permanent:永久重定向,返回码为301

例:rewrite /test/ (.*)/ky30/$1 permanent;

只要访问test.index就会跳转到ky30.index

.*是什么,$1就是什么

 

永久重定向,客户端和服务器要经过两次请求,两次响应

2、redirect:临时重定向,显示的返回码为302

例:rewrite /test/ (.*) /ky30/$1 redirect;

总结:永久重定向的返回码为301,永久性的变更url,搜索引擎会转移他的权重以及排名到新的url

临时重定向的返回码为302,用于短期变更(用于网站维护,或升级更新)搜索引擎不会转移权重和排名到新的url

核心:返回码

返回码304表示获取的是本地的缓存

3、break:①是重定向,但是不会改变uri,而且只会请求一次

②立即停止匹配,跳出当前匹配,即刻终止

 

 

4、last:本条规则匹配完成后,继续向下匹配,只要有last就继续匹配,配置的时候要注意防止死循环
————————————————
版权声明:本文为CSDN博主「manyulanlanlu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/manyulanlanlu/article/details/132165306