首页 > 系统相关 >nginx中location的写法有哪些?优先级是什么呢?rewrite如何使用?

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

时间:2023-08-12 17:36:14浏览次数:35  
标签:优先级 重定向 rewrite text nginx location 匹配

主要内容:一、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

标签:优先级,重定向,rewrite,text,nginx,location,匹配
From: https://www.cnblogs.com/zxbin/p/17625112.html

相关文章

  • 若依不分离 部署阿里云 nginx代理配置
    server{listen80;server_name域名;include/etc/nginx/default.d/*.conf;location/{proxy_passhttp://127.0.0.1:18089; #内网端口proxy_set_headerHost$http_host;......
  • 使用nginx进行负载均衡
    目录1、nginx负载均衡介绍2、nginx负载均衡策略我使用了三台VPS服务器,同一网段的,用来搭建网站,推荐你们也可以使用3A服务器1、nginx负载均衡介绍nginx应用场景之一就是负载均衡。在访问量较多的时候,可以通过负载均衡,将多个请求分摊到多台服务器上,相当于把一台服务器需要承担的负......
  • Nginx中的rewrite指令(break,last,redirect,permanent)
    rewite在server块下,会优先执行rewrite部分,然后才会去匹配location块server中的rewritebreak和last没什么区别,都会去匹配location,所以没必要用last再发起新的请求,可以留空location中的rewirte:不写last和break-那么流程就是依次执行这些rewrite1.rewritebreak-url重写后,直......
  • nginx源码分析之http解码实现
    分析nginx是如何解析并且存储http请求的。对非法甚至恶意请求的识别能力和处理方式。可以发现nginx采用状态机来解析http协议,有一定容错能力,但并不全面相关配置 跟解码有关的配置 merge_slashes 语法merge_slasheson|off默认值on上下文httpserver说明支持解析请求行时,合并相......
  • Apache Nginx中记录自定义Header
    从Apache切到Nginx需要保持日志格式统一,以便兼容之前的数据统计脚本现在Apache的日志格式为:LogFormat"%h%t%m%U%q%>s%{HEAD}i%D"说明:%h:客户端IP地址%t:时间(标准英语格式)%m:请求的方法(GET,POST)%U:请求的URL路径,不包含查询字符串%q:查询字符串%>s:请求的最终状态%{HEAD}i:请......
  • nginx优化加强战斗力及遇到的坑解决
    先说遇到个坑,第一个是负载问题,这个问题与架构有关,由于我设计架构多了两层,结果导致会话负载只转向一个。解决这样的问题思路有两个:一是改变负载策略,二是更改架构设计。由于采用动静分离部署,而nginx又设计了静态,结果客户端去读nginx静态,访问量上来,页面加载很慢。解决:二者......
  • 第一章 安装Nginx+Lua开发环境
    首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个WebServer使用。借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序。而且OpenResty提供了大量组件如Mysql、Redis、Memcached等等,使在Ng......
  • Nginx+Lua开发入门
    Nginx入门本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章:nginx启动、关闭、重启agentzh的Nginx教程http://openresty.org/download/agentzh-nginx-tutorials-zhcn.htmlNginx+Lua入门http://17173ops.com/2013/11/01/17173-ngx-lua-manual.shtmlnginx配置指令的......
  • nginx三种获取用户真实ip的方法
    随着nginx的迅速崛起,越来越多公司将apache更换成nginx.同时也越来越多人使用nginx作为负载均衡,并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户的真实IP地址,如果后端是apache,请跳转到<apache获取用户真实IP地址>,如果是后端真实服务器是nginx,那么继续......
  • Nginx 安全的配置项
    1 漏扫出现的问题1.1 检测到目标X-Content-Type-Options响应头缺失修复方法:nginx 增加响应头配置:add_header X-Content-Type-Options "nosniff"  always; 详细解释:X-Content-Type-Options头信息是一种安全策略,用于防止浏览器在解析响应内容类型时执行MIME类型嗅探......