Rewrite

  • Rewrite 通过正则表达式的使用改变URI(相对),可以同时存在一个或者多个指令,按照顺序依次对URL进行匹配和处理
    • Rewrite 接受到的URI不包含host地址
 
  • Rewrite介绍
    • Rewrite是Nginx服务器提供的一个重要基本功能,其在Web服务器产品中几乎是必备的功能,用于实现URL的重写
      • URL的重写是非常有用的功能,
            比如它可以让我们在改变网站结构后,无需要求客户端用户修改原来的书签,也无需其他网站修改对我们网站的友情链接,
    • 它还可以在一定程度上提高网站的安全性,
    • 能够让我们的网站显得更加专业
    • Nginx的Rewrite功能依赖于PCRE(Perl 兼容的正则表达式)
    • ngx_http_rewrite_module
  • 地址重写 和 地址转发
    • 地址重写 实际上是为了解决地址标准化
      • 地址标准化
        • 举个例子,比如在访问百度首页的时候,我们在地址中可以输入www.baidu.com,也可以输入
        • www5.baidu.com www.baidu.com.cn www.baidu.cn baidu.com
        • 他们都能准确的指向www.baidu.com
        • 如果我们ping就会发现地址不同,我们可以在命令行测试下
        • 在客户端看来,baidu首页同时对应了几个地址,实际上baidu服务器是在不同的地址中选择了确定的一个,www.baidu.com,进而返回服务器响应的,
        • 这个过程就是地址标准化的过程,baidu.com这个地址在服务器中被改编为www.baidu.com的过程就是地址重定向的过程
      • 地址转发(反向代理)
        • 转发的概念最初和网页的访问并没有太大关系,它是指网络数据传输过程中数据分组到达路由器后该设备通过检查分组地址并将数据转到相邻局域网上的过程
        • 后来该概念被用在了网页访问中,就出现了地址转发这一说法,是指一个域名指到另一个已有站点的过程
      • 地址重写和地址转发的几点区别
        • 地址转发后客户端浏览器地址栏的地址的显示是不改变的,而地址重写后客户端浏览器地址栏中的地址改编为服务器选择确定的地址
        • 在一次地址转发整个过程中,只产生一次网络请求,而一次地址重写一般会产生两次请求
        • 地址转发一般发生在同一站点的项目内,而地址重写没有该限制
        • 地址转发到的页面可以不用全路径名表示,而地址重写到的页面必须使用完整的路径名表示
        • 地址转发过程中,可以将客户端请求的request范围内属性传递给新的页面,但地址重写不可以
        • 地址转发的速度较地址重写快

10.9 Rewrite原理的更多相关文章

  1. Java多线程系列--“JUC锁”10之 CyclicBarrier原理和示例

    概要 本章介绍JUC包中的CyclicBarrier锁.内容包括:CyclicBarrier简介CyclicBarrier数据结构CyclicBarrier源码分析(基于JDK1.7.0_40)Cyc ...

  2. Java-二进制转10进制原理机制

    任何文件在计算机储存时都是以二进制储存的,由 1和0 组成,如: 101010101010100111110100101010 现在有一组二进制数据: 10010110 那么他转成10进制是多少呢(我 ...

  3. 机器学习实战(Machine Learning in Action)学习笔记————10.奇异值分解(SVD)原理、基于协同过滤的推荐引擎、数据降维

    关键字:SVD.奇异值分解.降维.基于协同过滤的推荐引擎作者:米仓山下时间:2018-11-3机器学习实战(Machine Learning in Action,@author: Peter Harr ...

  4. 2017.10.18 微机原理与接口----汇编语言语法和DOS功能调用

    4.1 汇编语言中的基本数据 ·标识符 ·常数 ·变量具有三个属性: (1)段地址(SEG):变量所在段的段地址 (2)偏移地址(OFFSET):变量所在段内的偏移地址 (3)类型(TYPE):每个变 ...

  5. 一篇文章说透Nginx的rewrite模块

    rewrite模块即ngx_http_rewrite_module模块,主要功能是改写请求URI,是Nginx默认安装的模块.rewrite模块会根据PCRE正则匹配重写URI,然后发起内部跳转再匹配 ...

  6. Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例

    概要 本章,我们对JUC包中的信号量Semaphore进行学习.内容包括:Semaphore简介Semaphore数据结构Semaphore源码分析(基于JDK1.7.0_40)Semaphore示例 ...

  7. 《精解Windows 10》

    <精解Windows 10>全面深入讲解Windows 10操作系统的使用方法.本书共计14章内容.第一章简述Windows 10操作系统的一些变革:第二章介绍Modern 2.0界面的体 ...

  8. 成为Android高手必须掌握的28大项内容和10个建议

    (一)成为Android高手必须掌握的8项基本要求 [1] Android操作系统概述1. Android系统架构.           2. Android利用设计理念.           3. ...

  9. 9. 图解分析Redis的RDB和AOF两种持久化机制的原理

    1.RDB和AOF两种持久化机制的介绍 2.RDB持久化机制的优点3.RDB持久化机制的缺点4.AOF持久化机制的优点5.AOF持久化机制的缺点6.RDB和AOF到底该如何选择 我们已经知道对于一个企 ...

随机推荐

  1. ffmpeg 常用知识点收集

    ffmpeg 常用知识点收集 一.基础简介 FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影.转换.流功能,包含了libavcodec ─这是一个用于多个项目中音频和视频的解码器库,以及l ...

  2. Java事件模型

    1 import javax.swing.*; 2 import java.awt.event.*; 3 public class TestSourceListener { 4 5 public st ...

  3. 转:C语言自增自減问题总结

    C语言自增自減问题总结 在程序设计中,经常遇到"i=i+1"和"i=i-1"这两种极为常用的操作.C语言为这种操作提供了两个更为简洁的运算符,即++和--,分别 ...

  4. 并发编程之:ThreadLocal

    大家好,我是小黑,一个在互联网苟且偷生的农民工. 从前上一期[并发编程之:synchronized] 我们学到要保证在并发情况下对于共享资源的安全访问,就需要用到锁. 但是,加锁通常情况下会让运行效率 ...

  5. 15-SpringCloud Stream

    Stream是什么及Binder介绍 官方文档1 官方文档2 Cloud Stream中文指导手册 什么是Spring Cloud Stream? 官方定义Spring Cloud Stream是一个 ...

  6. php open_basedir绕过

    描述 php为了安全性考虑,有一项 open_basedir 的设置,它可将用户访问文件的活动范围限制在指定的区域.根据你web服务器环境,open_basedir可以在几个地方设置. 首先 在php ...

  7. docker数据卷(Data Volumes)

    Docker宿主机和容器之间文件拷贝docker copy 前言: Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享,这必然涉及 ...

  8. noip模拟29

    这次终于是早上考试了 早上考试手感不错,这次刷新了以前的最高排名- %%%cyh巨佬 \(rk1\) %%%CT巨佬 \(t2\) 90 纵观前几,似乎我 \(t3\) 是最低的-- 总计挂分10分, ...

  9. 第07课:GDB 常用命令详解(下)

    本课的核心内容: disassemble 命令 set args 和 show args 命令 tbreak 命令 watch 命令 display 命令 disassemble 命令 当进行一些高级 ...

  10. ❤️【Android精进之路-01】定计划,重行动来学Android吧❤️

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. Android精进之路第一篇,确定安卓学习计划. 干货满满,建议收藏,需要用到时常看看.小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~. 前言 ...