nginx的匹配方式和重定向

这篇具有很好参考价值的文章主要介绍了nginx的匹配方式和重定向。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、nginx的匹配方式

1、nginx的正则表达式:

2、location匹配的分类:

3、location的匹配的优先级:

4、在工作中配置location的原则:

二、nginx的重定向:

1、rewrite:

2、flag标志位:

3、配置方式:

4、实验:

1、基于域名的跳转:

2、基于ip访问跳转:

3、基于结尾文件跳转

三、本章总结:


一、nginx的匹配方式

nginx中location的优先级和匹配方式:

在http模块中有server,在server中才有location,location匹配的是uri

在一个server中有多个location,如何来确定匹配哪个location。

1、nginx的正则表达式:

^:字符串的起始位置

$:字符串的结束位置

*:匹配所有

+:匹配前面的字符一次或者多次

?:匹配前面的字符0或1次

.:任意单个字符 。 \ .就是点

{n}:连续重复出现n次

{n,m}:连续重复最少n次最多m次n-m

  1. z0-9A-Z]

[c]:匹配单个字符c

():分组

|:或

2、location匹配的分类:
  1. 精确匹配 location = /test{....}

完整的路径,一个字都不能少,也不能错

  1. 正则匹配:location ~ / {}

location ^~:前缀匹配,以什么为开头

location ~:区分大小写进行匹配

location ~*:不区分大小写

location !~:区分大小写,取反匹配

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

  1. 一般匹配:location /test {}

示例:

精确匹配:

location = / {

[ configuration A ]

}

一般匹配:

location / {

[ configuration B ]

}

正则匹配:/images/下面的所有

location ^~ /images/ {

[ configuration D ]

}

正则匹配:匹配gif、jpg、jepg结尾的文件

location -* .(gif|jpg|jpeg)$ {

[ configuration E]

}

location匹配一旦匹配成功,不再向下继续匹配

3、location的匹配的优先级:

nginx精准匹配,web,nginx,运维,网络,http,服务器,linuxnginx精准匹配,web,nginx,运维,网络,http,服务器,linux

三个目录全部,放入1.jpg图片

nginx精准匹配,web,nginx,运维,网络,http,服务器,linuxnginx精准匹配,web,nginx,运维,网络,http,服务器,linuxnginx精准匹配,web,nginx,运维,网络,http,服务器,linux

实验发现,精确匹配优先级最高

第二优先级是正则匹配

最后是一般匹配

优先级:

精确匹配——正则匹配——一般匹配

完整的优先级:面试题

location = 完整路径 >  location ^~  > location ~,~* > location /test > location /

4、在工作中配置location的原则:
  1. 网站首页:一律都是精确匹配,一般都是匹配网站根工作目录(一般网站首页都是静态页面)

location = / {

}

  1. 处理静态文件的请求:目录匹配和后缀匹配

location ^~ /static {

}

location ~* \.{html|jpg|gif|png}$ {

}

  1. 一般规则:动态请求,把动态请求转发到后端的动态页面的服务器

location / {

proxy_pass http://tomcat setrver;

}

练习:

1、

http://www.example.com/gallery/images/cat.png

  1. location /gallery { }
  2. location ^~* /.(png|jpg)$ { }
  3. location = /gallery/images { }
  4. location / { }

选择:D

解析:

A,一般匹配,只能匹配到gallery目录下面的文件

B,匹配的是/目录下面,png结尾的文件

C,精确匹配要完整路径,/gallery/images/cat.png

D,一般匹配匹配所有

  1. 如果访问/abcd 会匹配到哪个config?
  1. location ~ /abc { }
  2. location /abc { }
  3. location ^~ /abc { }

选择:C

  1. 正则匹配,能匹配到,但是优先级没有C高
  2. 是匹配/abc下面的文件,匹配不了/abcd目录下面

.

二、nginx的重定向:

1、rewrite:

结合了nginx提供的全局变量和自定义的变量,结合正则表达式以及标志位,实现URL重写以及重定向。

rewrite执行顺序:

  1. 先执行server块里面的rewrite
  2. 执行location里面定义的rewrite
  3. 选定location中的rewrite

rewrite中可以支持if语句,但只有if没有else

rewrite语法:

rewrite <regex> <replacement> [flag]

<regex>:正则表达式

<replcement>:跳转的内容或者路径

[ flag ]:标志位 "标记"

2、flag标志位:

last:本条规则匹配完成之后,继续向下匹配新的location URI规则

如: rewrite ky32 k31 last;

location / {

 root html;

rewrite last

}

break:本条规则匹配完之后立即终止,页面内容变化,uri不变

redirct:临时重定向 302 uri的地址会发生变化

permanent:永久重定向

3、配置方式:

永久重定向:

rewrite /test/(.*) /ky32/$1 permanent;

访问test下的所有,都会跳转到/ky32

.*:访问所有

$1:表示捕获组,$1表示正则表达式的第一个捕获组($1 就是前面(.*)里面的内容)

意思是:

访问www.ky32.com/test/index.hmtl 1.jpg

捕获的是www.ky32.com/ky32/inded.html 1.jpg

nginx精准匹配,web,nginx,运维,网络,http,服务器,linuxnginx精准匹配,web,nginx,运维,网络,http,服务器,linux

临时跳转:302

nginx精准匹配,web,nginx,运维,网络,http,服务器,linuxnginx精准匹配,web,nginx,运维,网络,http,服务器,linux

临时跳转和永久跳转的区别:

主要是影响搜索引擎的权重,永久重定向会加入到搜索引擎的排名,临时不会加入搜索引擎的权重。

break的效果:

nginx精准匹配,web,nginx,运维,网络,http,服务器,linuxnginx精准匹配,web,nginx,运维,网络,http,服务器,linux

break既是重定向,但是uri不会改变

break常用

last的效果:last继续匹配

nginx精准匹配,web,nginx,运维,网络,http,服务器,linux

nginx精准匹配,web,nginx,运维,网络,http,服务器,linux

internal redirection cycle while processing

处理请求时发生了重写或者内部重定向循环,进入了无线循环。nginx循环最多执行10次,超过之后会报错,500

nginx精准匹配,web,nginx,运维,网络,http,服务器,linuxnginx精准匹配,web,nginx,运维,网络,http,服务器,linux

把last换成break终止循环,不报错

总结:表面上rewrite和location都可以跳转,似乎有点相同,但是区别在于rewrite是在同一域名之内更改获取资源的路径,location是对路径进行访问控制

4、实验:
1、基于域名的跳转:

例:www.test.com但是公司业务变更,迁移到了新的域名www.koeda.com代替,但是旧域名不能被废除,通过访问test可以跳转到koeda。且匹配的uri还不能变。

$host:请求的主机名,变量名

nginx精准匹配,web,nginx,运维,网络,http,服务器,linux

nginx精准匹配,web,nginx,运维,网络,http,服务器,linux

相当于访问test和koeda域名都是访问20.0.0.30。一个ip可以对应多个域名

nginx精准匹配,web,nginx,运维,网络,http,服务器,linux

2、基于ip访问跳转:

公司业务新版本上线,用户访问网站统一显示固定的维护页面,只有公司的20.0.0.20客户端 能访问,其他都是维护页面

nginx精准匹配,web,nginx,运维,网络,http,服务器,linux

html下面创建error.html文件

第二台主机可以设置hosts域名映射:

nginx精准匹配,web,nginx,运维,网络,http,服务器,linuxnginx精准匹配,web,nginx,运维,网络,http,服务器,linuxnginx精准匹配,web,nginx,运维,网络,http,服务器,linux

3、基于结尾文件跳转

只要访问.php就会跳转到新的界面

点图片跳转,都是这个

nginx精准匹配,web,nginx,运维,网络,http,服务器,linux

去html下面创建upload目录并放入文件

nginx精准匹配,web,nginx,运维,网络,http,服务器,linux

hosts映射test

虚拟机访问upload 就 跳转到 test

三、本章总结:

重点:

location匹配的写法:

location = / 精确匹配,完全匹配,优先级最高

正则匹配:第二优先级

location ^~

location ~*

通用匹配:第三优先级

location /test

location /

location是访问控制。匹配到之后不再向下继续匹配。

网站的设置location规则:

  1. 精确匹配,只要是为了匹配首页
  2. location ^~ 或者 location ~* 来进行指定内容匹配
  3. location / 主要是为了做反向代理,把动态请求转发给后端服务器

rewrite:

permanent:永久重定向

redirect:临时重定向

break:转跳,但是跳转之后不再继续向下匹配,而且不改变uri

last:继续向下匹配,nginx只能循环十次,超过十次报错500

日志里:internal redirection cycle while processing

处理请求时发生了重写或者内部重定向循环,进入了无限循环。nginx循环最多可以执行10次,超过10次,会报错,500文章来源地址https://www.toymoban.com/news/detail-780055.html

到了这里,关于nginx的匹配方式和重定向的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringMVC转发和重定向, 以及文件功能的处理

    请求转发,请求重定向的区别和使用场景: 请求转发 特点: 请求转发是在服务器内部进行的,客户端不会察觉到。 转发是直接将请求传递给另一个组件,而不需要浏览器的参与。 转发是通过使用 RequestDispatcher 接口的 forward() 方法来实现的。 使用场景: 当两个组件共享相同的请

    2024年01月17日
    浏览(44)
  • Shell编程 管道和重定向 | 基本概念及其相关应用

    在Linux中,管道和重定向是非常有用的工具,用于处理命令的输入和输出。它们允许你将多个命令组合在一起,将命令的输出发送到文件或从文件中读取输入。以下是有关Linux管道和重定向的详细介绍,并附带了丰富的示例: 管道符号 | 用于将一个命令的输出传递给另一个命

    2024年01月18日
    浏览(42)
  • 【运维】Linux安装Nginx并部署前端项目的两种方式【内/外网-保姆级教程】

    目录 第一种方式 1准备nginx安装包并解压 2执行以下命令,安装nginx依赖包 3编译安装nginx 4验证安装 第二种方式 1下载所需要的安装包 2安装步骤 2.1将下载的完整文件夹通过压缩包的形式,上传到你的路径下解压. 2.2 进入到gcc文件夹下,执行命令: 2.3进入到gcc-c++文件夹下,执

    2024年02月04日
    浏览(50)
  • 网络安全全栈培训笔记(WEB攻防-51-WEB攻防-通用漏洞&验证码识别&复用&调用&找回密码重定向&状态值)

    知识点: 1、找回密码逻辑机制-回显验证码指向 2、验证码验证安全机制-爆破复用识别 3、找回密码客户端回显Response状态值修改重定向 4、验证码技术验证码爆破,验证码复用,验证码识别等 详细点: 找回密码流程安全: 1、用回显状态判断-res前端判断不安全 2、用用户名重

    2024年01月16日
    浏览(62)
  • 【运维】Linux安装Nginx并部署前端项目的两种方式【内 外网-保姆级教程】_linux部署前端项(1)

    1准备nginx安装包并解压 2执行以下命令,安装nginx依赖包 3编译安装nginx 4验证安装 第二种方式 1下载所需要的安装包 2安装步骤 2.1将下载的完整文件夹通过压缩包的形式,上传到你的路径下解压. 2.2 进入到gcc文件夹下,执行命令: 2.3进入到gcc-c++文件夹下,执行命令: 2.4检查

    2024年04月14日
    浏览(61)
  • 网络安全全栈培训笔记(53-WEB攻防-通用漏洞&CRLF注入&URL重定向&资源处理拒绝服务)

    知识点: 1、CRLF注入-原理检测利用 2、URL重定向-原理检测利用 3、Web拒绝服务-原理检测利用 #下节预告: 1、JSONPCORS跨域 2、域名安全接管劫持 #详细点: 1.CRLF注入漏洞,是因为Wb应用没有对用户输入做严格验证,导致攻击者可以输入一些 恶意字符。攻击者一旦向清求行或首部

    2024年01月15日
    浏览(53)
  • 使用nginx提供https端点,实现不修改浏览器地址(不触发重定向)转发网络流量,附生成自签ssl证书最简单的方法(2个命令)

    近日笔者需要实现一个网络流量转发的需求。要求很简单:将浏览器的请求转发到一个指定的域名,需要提供一个https端口并且把http端口转发到https端口。由于笔者对nginx的认知有限,因此磕磕绊绊研究了一阵,将结果写出来,以供其他有类似需求的同学参考对照。 nginx的官方

    2024年02月08日
    浏览(64)
  • mac 版 Nginx 的使用及 web 项目的实际部署--最简单的方式

    1.1 终端输入指令: which brew 如果显示如下图, 则证明已安装, 如果未安装, 终端执行如下指令: 检查是否安装成功, 执行指令: brew -v 执行指令: 检查是否已经安装完成, 执行指令: nginx -v 如下图所示, 代表已经安装成功; 简单介绍几种常用指令: 启动指令: nginx 或者是 sudo nginx 重启

    2024年02月16日
    浏览(30)
  • Nginx的重定向

    URI:统一资源标识符,是一种字符串标识,主要是用于标识抽象的或者是物理资源(主要是指一些文件视频等等) ^    匹配输入字符串的起始位置(以......开头) $    匹配输入字符串的结束位置(以......结尾) *    匹配前面的字符零次或多次 +    匹配前面的字符一次

    2024年02月06日
    浏览(34)
  • nginx rewrite(重定向)

    目录 一、什么是rewrite 二、rewrite使用场景 三、rewrite配置语法 四、常用的nginx正则表达式 五、nginx 配置文件里 location 项 1、localtion 作用 2、location 可以分为三类 3、location 的常用匹配规则 4、location 的 优先级与匹配规则 5、location 示例说明 六、案例 七、rewrite总结        R

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包