返回顶部
首页 > 资讯 > 数据库 >Nginx Rewrite详解
  • 589
分享到

Nginx Rewrite详解

nginx服务器mysql 2023-10-08 18:10:05 589人浏览 八月长安
摘要

目录 一、Rewrite跳转场景 二、Rewrite跳转实现 三、Rewrite实际场景 1.nginx跳转需求的实现方式: 2.rewrite放在server{},if{},location{}段中 3.对域名或参数字符串 四、Rewri

目录

一、Rewrite跳转场景

二、Rewrite跳转实现

三、Rewrite实际场景

1.nginx跳转需求的实现方式:

2.rewrite放在server{},if{},location{}段中

3.对域名或参数字符串

四、Rewrite正则表达式

五、Rewrite命令/语法格式

六、Location分类

1. location 大致可以分为三类:

2.location 常用的匹配规则:

七、Location优先级

八、Rewrite和Location比较

1.相同点

2.不同点

3.rewrite会写在location里,执行顺序

九、跳转小案例

十、总结

1.优先级总结:

2.location 匹配 

3.rewrite和location比较

4.实际网站使用中,至少有三个匹配规则定义:


一、Rewrite跳转场景

URL看起来更规范、合理

企业会将动态URL地址伪装成静态地址提供服务

网址换新域名后,让旧的访问跳转到新的域名上

服务端某些业务调整

ps:  

URL:就是一个具体路径/位置

URI:指的是一个拥有相同类型/特性的对象集合

URN:用名称定位

二、Rewrite跳转实现

通过ngx_Http_rewrite_module这个模块来实现,而这个模块内有四部分来组成:

Nignx:支持URL重写、支持if条件判断,但不支持else

跳转:循环最多可以执行10次,超过后Nginx将返回500错误

PCRE支持:rewrite使用nginx全局变量或自己设置的变量,结合正则表达式和标志位实现URL重写以及重定向

重写 模块:set指令

三、Rewrite实际场景

1.nginx跳转需求的实现方式:

使用rewrite进行匹配跳转

使用if匹配全局变量后跳转

使用location匹配再跳转

2.rewrite放在server{},if{},location{}段中

location只对域名后面的出去传递参数外的字符串起作用

3.对域名或参数字符串

使用if全局变量匹配

使用proxy_pass反向代理

四、Rewrite正则表达式

字符说明
^匹配输入字符串的起始位置
&匹配输入字符串的结束位置
*匹配前面的字符零次或多次
+匹配前面的字符一次或多次
匹配前面的字符零次或一次
.匹配除“\n”之外的任何单个字符
\将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用
\d匹配纯数字
{n} 重复 n 次
{n,} 重复 n 次或更多次
{n,m} 重复 n 到 m 次
[ ]定义匹配的字符范围
[c]

匹配单个字符 c

[a-z]匹配 a-z 小写字母的任意一个
[a-zA-Z0-9]匹配所有大小写字母或数字
( )表达式的开始和结束位置
|或运算符

五、Rewrite命令/语法格式

 

 flag标记说明

标记说明
last相当于Apache的[L]标记,表示完成rewrite
break本条规则匹配完成即终止,不再匹配后面的任何规则
redirect返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新URL
permanent返回301永久重定向,浏览器地址会显示跳转后的URL地址,爬虫更新URL

last :在本条规则完成后,继续向下匹配新的location URL规则,一般用在server和if当中

break :和last类似,但是不会重新发起一次处理过程,而是直接返回处理结果,一般用在location当中

redirect :该标记表示当前规则匹配成功后立即进行重定向操作(临时)

permanent :该标记和redirect类似,永久性重定向

set :表示当前规则匹配成功后设置一个变量,并把变量传入下一条规则

六、Location分类

1. location 大致可以分为三类:

精准匹配:location = / {...}
一般匹配:location / {...} 
正则匹配:location ~ / {...}

2.location 常用的匹配规则:

标记说明
=进行普通字符精确匹配,也就是完全匹配
^~表示普通字符匹配,使用前缀匹配
~区分大小写的匹配
~*不区分大小写的匹配
!~区分大小写的匹配取非
!~*不区分大小写的匹配取非
@定义一个命名的location,使用在内部定向时

七、Location优先级

首先精确匹配 =
其次前缀匹配 ^~
其次是按文件中顺序的正则匹配 ~或~*
然后匹配不带任何修饰的前缀匹配
最后是交给 / 通用匹配
    

八、Rewrite和Location比较

1.相同点

都能实现跳转

2.不同点

rewrite是在同一域名内更改获取资源的路径

location是对一类路径做控制访问或反向代理,还可以proxy_pass到其他机器

3.rewrite会写在location里,执行顺序

执行server块里面的rewrite指令

执行location匹配

执行选定的location中的rewrite指令

九、跳转小案例

基于域名的跳转:

#修改配置文件

重启服务

浏览器模拟访问www.kGC.com会跳转到www.benet.com

模拟访问www.kgc.com/test会跳转到www.benet.com/test,查看元素可以看到返回301,实现了永久重定向跳转,而且域名后的参数也正常跳转。

十、总结

1.优先级总结

(location = 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (location /)

2.location 匹配 

首先看 优先级:精确>前缀>正则>一般>通用
优先级相同:正则看上下顺序,上面的优先;一般匹配看长度,最长匹配的优先
精确、前缀、正则、一般 都没有匹配到,最后再看通用匹配  一般匹配

3.rewrite和location比较

rewrite:改写访问的URL路径  (被访问的html/HTM/CSS文件)

location:对一类地址进行权限控制(认证控制)+ 跳转(跨服务器进行URL跳转)

4.实际网站使用中,至少有三个匹配规则定义:

第一个必选规则

直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,比如说官网。可以是一个静态首页,也可以直接转发给后端应用服务器

第二个必选规则

处理静态文件请求,这是nginx作为http服务器的强项有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用

第三个规则

通用规则,比如用来转发带.PHP、.jsp后缀的动态请求到后端应用服务器非静态文件请求就默认是动态请求

来源地址:https://blog.csdn.net/Guo_youyou/article/details/131420729

您可能感兴趣的文档:

--结束END--

本文标题: Nginx Rewrite详解

本文链接: https://lsjlt.com/news/425552.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Nginx Rewrite详解
    目录 一、Rewrite跳转场景 二、Rewrite跳转实现 三、Rewrite实际场景 1.nginx跳转需求的实现方式: 2.rewrite放在server{},if{},location{}段中 3.对域名或参数字符串 四、Rewri...
    99+
    2023-10-08
    nginx 服务器 mysql
  • 详解常用的nginx rewrite重写规则
    在Nginx中,rewrite指令用于重写URL。它允许用户修改请求URI、查询参数以及HTTP请求方法。以下是常用的Nginx r...
    99+
    2023-08-14
    nginx
  • nginx rewrite(重定向)
    目录 一、什么是rewrite 二、rewrite使用场景 三、rewrite配置语法 四、常用的nginx正则表达式 五、nginx 配置文件里 location 项 1、localtion 作用 2、location 可以分为三类 3...
    99+
    2023-09-04
    nginx 运维 服务器
  • Nginx中location匹配以及rewrite重写跳转详解
    目录前言一、rewrite跳转实现二、rewrite执行顺序三、rewrite跳转场景四、语法与flg标记说明五、Nginx常用的正则表达式符号 六、location1.分...
    99+
    2024-04-02
  • nginx使用rewrite报错的解决
    目录项目场景:问题描述原因分析:解决方案:项目场景: 今天编译安装nginx的时候想着要做rewrite功能,匆忙瞟了一眼编译文档就直接make&&make inst...
    99+
    2023-03-08
    nginx rewrite报错 nginx rewrite
  • Nginx重写功能rewrite
    目录 一、Rewrite简单介绍 1、Rewrite的概述 2、Rewrite跳转场景 3、URI、URL、URN 4、Rewrite跳转实现 5、Rewrite实际场景  6、Nginx正则表达式 7、Rewrite执行顺序 二、loca...
    99+
    2023-10-23
    nginx 服务器 运维
  • nginx使用rewrite报错如何解决
    今天小编给大家分享一下nginx使用rewrite报错如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。问题描述由于本人...
    99+
    2023-07-05
  • nginx rewrite功能如何使用
    今天小编给大家分享一下nginx rewrite功能如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言大家...
    99+
    2023-06-30
  • nginx Rewrite重写地址的实现
    目录一、Nginx正则表达式二、location2.1、location大致可以分为三类2.2、 location 常用的匹配规则2.3、 location优先级2.4、locati...
    99+
    2024-04-02
  • Nginx怎么配置location与rewrite规则
    这篇文章主要讲解了“Nginx怎么配置location与rewrite规则”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Nginx怎么配置location与...
    99+
    2024-04-02
  • rewrite模块怎么在Nginx中使用
    rewrite模块怎么在Nginx中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。rewrite模块即ngx_http_rewrite_module模块,主要功能是改写...
    99+
    2023-06-06
  • apache url rewrite的RewriteRule参数详解
    在 Apache 中,使用 RewriteRule 参数可以进行 URL 重写和重定向。下面是 RewriteRule 参数的详细解...
    99+
    2023-08-28
    apache
  • phpcms在nginx的rewrite伪静态标准写法
    我用的lnmp一键安装包,conf文件是放在默认路径。在进行测试时,我先使用了 复制代码代码如下: location / { rewrite ^/caipu-([0-9]+)-([0-9]+)-([0-9]+).html...
    99+
    2022-06-12
    phpcms rewrite 伪静态
  • 常用的nginx rewrite重写规则有哪些
    常用的nginx rewrite重写规则有以下几种:1. 重定向:- 将所有请求重定向到一个新的URL:`rewrite ^/(.*...
    99+
    2023-08-14
    nginx rewrite
  • Nginx中rewrite(地址重定向)的深入剖析
    目录一、rewrite语法二、应用场景三、rewrite指定工作原理四、flag 参数简介1、last2、break3、redirect4、parmanent五、示例总结一、rewr...
    99+
    2024-04-02
  • 怎么在nginx中使用rewrite 配置伪静态
    本篇文章为大家展示了怎么在nginx中使用rewrite 配置伪静态,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不...
    99+
    2023-06-08
  • Nginx中location匹配及rewrite重写跳转的方法
    这篇文章主要介绍“Nginx中location匹配及rewrite重写跳转的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Nginx中location匹配及rewrite重写跳转的方法”文章能帮...
    99+
    2023-06-29
  • Nginx详解(一文带你搞懂Nginx)
    前言 最近进入了新篇章的学习,Nginx,特写下详细笔记与大家共享。 目录 前言一、Nginx是什么?二、Nginx的反向代理(扩展:正向代理)三、Nginx的负载均衡什么是负载均衡? 四、Nginx的动静分离!五、Nginx的...
    99+
    2023-08-30
    nginx 服务器
  • nginx location/区别详解
    目录1.location和proxy_pass都带/,则真实地址不带location匹配目录2.location不带/,proxy_pass带/,则真实地址会带/3.location...
    99+
    2024-04-02
  • 3-Nginx 命令详解
    一、Nginx命令详解Nginx     启动nginx服务Nginx  -v 查看版本信息Nginx  -V 查看编译信息Nginx  -t 检查配置文件Nginx  -T 检查配置文件,并打印详细信息Nginx  -s 发送信号:  ...
    99+
    2023-01-31
    详解 命令 Nginx
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作