1. 优先级
    1. 在nginx的location和配置中location的顺序没有太大关系。正location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。
        
      第一优先级:等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
      第二优先级:^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
      第三优先级:正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
      第四优先级:常规字符串匹配类型。按前缀匹配。
  2. 2.匹配规则(localtion后面)

    1.   ~ 表示执行一个正则匹配,区分大小写
    2. ~* 表示执行一个正则匹配,不区分大小写
    3. ^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。
    4. = 进行普通字符精确匹配。也就是完全匹配。
    5. @ "@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
    6. * -f和!-f用来判断是否存在文件
    7. * -d和!-d用来判断是否存在目录
    8. * -e和!-e用来判断是否存在文件或目录
    9. * -x和!-x用来判断文件是否可执行

  3.rewrite指令的最后一项参数为flag标记,flag标记有:
      1.last    相当于apache里面的[L]标记,表示rewrite。
        2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。
      3.redirect  返回302临时重定向,浏览器地址会显示跳转后的URL地址。
      4.permanent  返回301永久重定向,浏览器地址会显示跳转后的URL地址。

  4.使用变量$1,$2

      

rewrite ^(/data/.*)/geek/(\w+)\.?.*$ $1/linux/$2.html last;

  $1和$2分别代表中间正则能匹配到的变量,url/data/distro/geek/test.php 将会转到 url/data/distro/linux/test.html

一些代码示例

location /data/ {
rewrite ^(/data/.*)/geek/(\w+)\.?.*$ $1/linux/$2.html break;
return 403;
} #使用一些自带变量。$scheme, $http_host, $http_user_agent,
if ($scheme = "http") {
rewrite ^ https://www.thegeekstuff.com$uri permanent;
} if ($http_host = thegeekstuff.com) {
rewrite (.*) https://www.thegeekstuff.com$1;
} if ($http_user_agent = MSIE) {
rewrite ^(.*)$ /pdf/$1 break;
} #捕获错误日志
error_log /var/log/nginx/error.log notice;
rewrite_log on;

  https://www.thegeekstuff.com/2017/08/nginx-rewrite-examples/

  

nginx rewrite规则笔记的更多相关文章

  1. Nginx Rewrite规则记录

    Rewrite 是一种服务器的重写脉冲技术,它可以使得服务器可以支持 URL 重写,是一种最新流行的服务器技术.它还可以实现限制特定IP访问网站的功能.很多情况下,某个 IP 的访问很容易造成 CPU ...

  2. Nginx rewrite 规则 与 proxy_pass 实现

    Nginx rewrite 规则  与 proxy_pass 实现     -------------------------------------------------------------- ...

  3. Nginx Rewrite规则详解

    Rewrite规则含义就是某个URL重写成特定的URL,从某种意义上说为了美观或者对搜索引擎友好,提高收录量及排名等. Rewrite规则的最后一项参数为flag标记,支持的flag标记主要有以下几种 ...

  4. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  5. [转】 nginx rewrite规则

    http://www.cnblogs.com/cgli/archive/2011/05/16/2047920.html 最近在VPS上尝试配置安装一个网站,VPS安装了LNMP(Linux+Nginx ...

  6. [转帖]Nginx rewrite 规则 与 proxy_pass 实现

    Nginx rewrite 规则 与 proxy_pass 实现 https://www.cnblogs.com/jicki/p/5546916.html Nginx rewrite 规则  与 pr ...

  7. Nginx Rewrite规则

    location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配 ...

  8. codeigniter nginx rewrite规则配置【转】

    转自:http://www.nginx.cn/1134.html nginx如何配置才能支持codeigniter ? 1. codeigniter的url美化去掉index.php   1 2 3 ...

  9. Nginx Rewrite规则初探(转)

    Nginx  rewrite(nginx url地址重写)Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Ng ...

随机推荐

  1. 结构体中.和->两种访问区别

    定义结构体指针,访问成员时就用->定义结构体变量,访问成员时就用. 例如:struct A { int a; char b;}; struct A q; 访问成员就用:q.a;struct A ...

  2. js 实现数据结构 -- 字典

    原文: 在Javascript 中学习数据结构与算法. 概念: 集合.字典.散列表都可以存储不重复的数据.字典和我们上面实现的集合很像. 当然,字典中的数据具有不重复的特性.js 中 Object 的 ...

  3. Spring cloud zuul跨域(一)

    项目背景:我们有web和大屏,以及移动端,需要访问微服务接口. 然而大屏时自己打开的网页,在网页中通过js调用我的webapi.出现了跨域情况. 原因:出现这个问题,是由于跨域请求有2次请求. 第一次 ...

  4. [LVM]创建LVM卷

    https://www.cnblogs.com/softidea/p/5147090.html

  5. 【简】题解 AWSL090429 【数塔问题】

    因为每次只ban一个点 而且不是永久性的 预处理出每个点从上往下和从下往上的最大值 每次询问直接暴力 被ban掉点那行去掉那点的最大值 也可以直接预处理出每行的最大值和次大值 还有种做法貌似可以过 预 ...

  6. JDK源码分析(8) StringBuffer & StringBuilder

    简介 StringBuffer与StringBuilder是两个常用的操作字符串的类.大家都知道,StringBuilder是线程不安全的,而StringBuffer是线程安全的.前者是JDK1.5加 ...

  7. P1996 约瑟夫问题-题解(队列??明明是单循环链好吗)

    一如既往的题目传送:     https://www.luogu.org/problemnew/show/P1996 这里不讲数组模拟的方法(毕竟多做点题的模拟功力足以暴力出这道题),而是讲一种单循环 ...

  8. sql笔试题

    笔试题1: 1.select * from tablex where name = "张*" order by age  默认升序      select * from table ...

  9. 记录下扣jio的2018年

    踩着18年的尾巴,写下这篇总结,既给18年画上句号,也展望19年,制定下计划. 自17年底正式接手团队项目管理工作以来,虽然前面一年都干了大部分工作,但正式走到这个位置上来,还是有一部分的期待.接手之 ...

  10. python之路(7)装饰器

    前言 装饰器:为函数添加附属功能,本质为函数 原则:不修改被修饰函数的源代码 不修改被修饰函数的调用方式 装饰器=高阶函数+函数嵌套+闭包 使用场景演示 定义下面函数 def cal(l): res ...