什么是Nginx重写模块

  介绍

今天就跟大家聊聊有关什么是Nginx重写模块,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

重写跳转场景

 URL看起来更规范,合理
  企业会将动态URL地址伪装成静态地址提供服务
  网址换新域名后,让旧的访问跳转到新的域名上
  服务端某些业务调整

重写跳转实现

什么是Nginx重写模块

重写实用场景

<李>

<强> Nginx跳转需求的实现方式
使用重写进行匹配跳转
使用如果匹配全局变量后跳转
使用位置匹配再跳转

<李>

<强>重写放在服务器{},{},{}位置段中

<李>

<强>对域名或参数字符串
使用如果全局变量匹配
使用proxy_pass反向代理

常用的正则表达式元字符

字符说明^匹配输入字符串的起始位置美元匹配输入字符串的结束位置*匹配前面的字符零次或多次+匹配前面的字符一次或多次吗?匹配前面的字符零次或一次。匹配除\ n之外的任何单个字符,使用诸如“[。\ n]“之类的模式,可匹配包括“\ n"在内的任意字符\ d匹配纯数字,[0 - 9]{n}重复多次{n}重复n次或更多次[c]匹配单个字符c [a - z]匹配所有小写字母的任意一个[a-zA-Z]匹配所有小写字母或所有大写字母的任意一个

重写命令h2 <>前语法:   rewrite  & lt; regex>,,,,,,,,,,,, & lt; replacement>,,,,,,,,,,,,,(标志);   ,,,,,,,,,,,正则,,,,,,,,,,,,,,,,,,跳转后的内容,,,,,,,,,,,,,,,重写支持的国旗标记

<强>国旗标记说明:

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

<强>最后和打破比较:


lastbreak使用场景一般写在服务器和如果中一般使用在位置中URL匹配不终止重写后的URL匹配终止重写后的URL匹配

位置分类

<>之前分类:   ,,,的位置=,patt {},(精准匹配)   ,,,的位置patt {},(一般匹配)   ,,,的位置~,patt {},(正则匹配)

<强>正则匹配的常用表达式:

标记说明~执行一个正则匹配,区分大小写~ *执行一个正则匹配,不区分大小写! ~执行一个正则匹配,区分大小写不匹配! ~ *执行一个正则匹配,不区分大小写不匹配^ ~普通字符匹配;使用前缀匹配。如果匹配成功,则不再匹配其他位置=普通字符精准匹配。也就是完全匹配@定义一个命名的位置,使用在内部定向时

位置优先级h2 <>之前* *相同类型的表达式,字符创长的会优先匹配* *   * *按优先级排列* *   ,,,=,类型   ,,,^ ~,类型表达式   ,,,正则表达式(~和~ *)类型   ,,,常规字符串匹配类型,按前缀匹配   ,,,通常匹配(/),如果没有其他匹配,任何请求都会匹配到

比较重写和位置

 * *相同点* *
  ,,,,,,,都能实现跳转
  * *不同点* *
  ,,,,,,,改写是在同一域名内更改获取资源的路径
  ,,,,,,,位置是对一类路径做控制访问或方向代理,还可以proxy_pass到其他机器
  * *写会写在位置里执行顺序* *
  ,,,,,,,执行服务器块里面的重写指令
  ,,,,,,,执行位置匹配
  ,,,,,,,执行选定的位置中的重写指令

位置优先级的示例

 # #精确匹配/,主机名后面不能带任何字符串
  位置=,/,{
  (,configuration  A ),,,,,
  }
  
  # #所有的地址都以/开的头,这条规则将匹配到所有请求,但正则和最长字符串会优先匹配
  的位置,/,{
  (,configuration  B ),,,,,
  }
  
  # #匹配任何以/文件/开头的地址,当后面正则表达式没有匹配到时,才起作用
  位置/文件/,{
  (,configuration  C )
  }
  
  # #匹配任何以/文件/abc开头的地址,当后面正则表达式没有匹配到时,才会起作用
  的位置~,/文件/abc  {
  (,configuration  D )
  }
  
  # #以/图片/开头的地址,匹配符合后,停止往下匹配
  位置^ ~,/图片/,{
  (,configuration  E )
  }
  
  # #匹配所有以gif结尾的请求,/图片/下的图片会被[configuration  E]处理,因为^ ~的优先级更高
  的位置~ * \。美元(gif | jpg | jpeg), {
  (,configuration  F )
  }
  
  # #最长字符匹配到/图片/abc,优先级最低
  位置/图片/abc  {
  (,configuration  G )
  }
  
  # #以/图片/abc开头的,优先级次之
  的位置~,/图片/abc  {
  (,configuration  H )
  }
  
  # #如果和正则~/图像/abc/1. html相比,正则优先级更高
  位置/图片/abc/1. html  {
  (,configuration 小姐)
  }

什么是Nginx重写模块