当前位置: 首页 > news >正文

第四章nginx组件精讲

nginx配件location匹配的规则和优先级(重点面试题)

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

nginx当中:uri

www.ky30.com/images/1.jpg ——images/1.jpg (是uri)

location 就是用来匹配uri的:

1,精确匹配:location = / {...}

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

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

匹配的规则:

= :精确匹配,完全匹配,错一个字都匹配不到,必须完全一致。
^~:匹配普通字符,前缀匹配
~$:结束位置

~:区分大小写的匹配

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

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

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

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

= > ~ > /

精确匹配优先级最高,正则第二,通用最后

优先级:

location = > location ^~ > location~* > location /test/ > location /

location = 最高优先级

location ^~/images/ 正则,以什么为开头

location ~*\ .(jpg|png)$ 不区分大小写,匹配以 .jpg或者.png结尾的uri优先

location /test/ 通用完整路径

location / 通用匹配

一旦匹配到了之后,不在向下匹配。优先级根据精准度,location匹配的是uri

生产中location匹配规则:

1,第一个必选按规则:

location = / {}

直接匹配根网站。通过域名访问网站首页是最多的。使用精确匹配,可以加快处理速度。首页。

2,第二个规则:

locaation ^~ /static/ {}

处理静态文件的请求,目录匹配。

3,location ~*.(gif|jpg|png|css),图片匹配用

4,通用规则:

location / {

proxy_pass 指定代理,反向代理,转发动态请求。 .php.jsp的请求,发到后端。

}

rewrite:重写,重定向

rewrite 使用nginx的群居变量或者是自己设置的变量,结合正则表达式和标志位实现url的重定向

rewrite执行顺序:

1,执行server块当中的rewrite

2,执行location匹配

3,如果location当中还有rewrite,继续执行

如果不停的rewrite,会进入死循环,10次之后报错,报错状态码:500

rewrite的语法

rewrite <regex><replacement>[flag]

rewrite:开始重定向

regex:正则匹配的规则

replacement:表示跳转之后的内容,你要重订向的url

flag:标志位

permanent:永久重定向

redirect:临时重定向,显示返回码302

总结:

永久重定向:301,永久性的变更url,搜索引擎会转移他的权重以及排名到新的url
临时重定向:302,用于短期变更(网站维护,或者升级更新。)搜索引擎是不会转移权重和排名到新的url

304:都是缓存,获取本地缓存

break:是重定向,但是他不会改变url,而且只会请求1次。跳出当前的匹配,即可终止。

last:本条的规则匹配完成后,继续向下匹配,只要有last',就继续匹配。匹配的时候需要注意,防止死循环

rewrite or internal redirection cycle while processing #写成死循环,一直在匹配location,10次,返回码500。

                                                                                                                                  nginx的内置变量: 

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

 

text/html:默认的响应类型,也就是我们说的页面

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

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

text/javascript:java脚本,.js。前端文件,也可以理解是Java解析的程序文件。

小实验:

基于域名跳转:

基于ip地址跳转:(页面维护或者升级)

###

http://www.lryc.cn/news/131632.html

相关文章:

  • LlamaGPT -基于Llama 2的自托管类chatgpt聊天机器人
  • 常见的跨域解决方案
  • 分布式websocket解决方案
  • 奥威BI财务数据分析方案:借BI之利,成就智能财务分析
  • Android12之com.android.media.swcodec无法生成apex问题(一百六十三)
  • Xcode build和version
  • 前端面试:【原型链】代码世界的家族传承
  • 2D应用开发是选择WebGL 还是选择Canvas?
  • Android Framework 常见解决方案(20)UDP广播无效问题
  • VINS-Mono中的边缘化与滑窗 (4)——VINS边缘化为何是局部变量边缘化?
  • 真·VB.NET彻底释放Interop.Excel对象
  • 记录hutool http通过代理模式proxy访问外面的链接
  • Selenium 自动化 | 案例实战篇
  • 前端技术栈es6+promise
  • windows vscode使用opencv
  • json文件读取数据报错 AttributeError: ‘str‘ object has no attribute ‘items‘
  • 1、Spring_IOC
  • Socks5、IP代理在爬虫开发与HTTP通信中的应用
  • 重新认识小米
  • react之react-redux的介绍、基本使用、获取状态、分发动作、数据流、reducer的分离与合并等
  • 滑块验证码-接口返回base64数据
  • 智能文件改名,一键与上上级目录名称同步,让文件整理更加便捷
  • RK3399平台开发系列讲解(内核调试篇)Valgrind使用案例
  • 07_缓存预热缓存雪崩缓存击穿缓存穿透
  • 常见前端基础面试题(HTML,CSS,JS)(三)
  • CSS(JavaEE初阶系列14)
  • 学习笔记230810--get请求的两种传参方式
  • 游戏找不到msvcr100.dll解决方法,常见的三种解决方法
  • 机器学习知识点总结:什么是GBDT(梯度提升树)
  • SpringBoot + Vue 微人事权限组管理模块 (十四)