1. rewrite模块的return指令:

return指令 是由 rewrite模块提供的 一个非常常用的指令,可以在 SERVER_REWRITE 和 REWRITE 这两个阶段生效,
它可以帮助我们做 重定向 和 一些简单的返回。

如果return指令生效了,则后面所有阶段的HTTP模块是没有机会得到执行的。

2. return指令的用法:

如图中所示,return指令 有三种用法:

return code [text];
return code URL;
return URL;

举例:

location / {return 404 "find nothing!";
}
#   return code [text];server {return 403;
}
#   return code;

HTTP “30X” 状态码的含义:

HTTP 1.0 标准:

301:http 1.0 永久重定向

例如客户端要访问网站A,Nginx返回301和网站B的URL重定向,则客户端会将这一次的重定向结果缓存起来,以后只要遇到要访问网站A的资源时,就自动重定向到网站B上,再也不会去访问网站A;

302:临时重定向,禁止被缓存

例如客户端要访问网站A,Nginx返回302和网站B的URL重定向,那么这一次客户端会重定向的去访问网站B,
但是当下一次客户端又需要访问网站A的资源时,还是会去访问网站A的URL,客户端不会缓存Nginx返回的302指示的重定向结果;

HTTP 1.1 标准:

303:临时重定向,允许改变方法,禁止被缓存

与302功能类似,区别在于允许改变方法,例如访问网站A时使用的是POST方法,在访问重定向后的网站B时可以变为GET方法;

307:临时重定向,不允许改变方法,禁止被缓存

与302功能类似,区别在于不允许改变方法,即重定向前后的两次访问必须使用相同的方法,如果访问网站A的方法是GET,那么重定向后访问网站B也必须是GET方法;

308:永久重定向,不允许改变方法

与301功能类似,区别在于不允许改变改变访问方法。

Nginx 自定义:

444:立刻关闭连接,Nginx不会再给客户端返回任何东西。

3. return指令 与 error_page指令:

error_page指令 的功能是: 当我们收到一个返回码的时候,我们可以将其重定向为另外一个URI,也可以指定给用户返回不一样的内容,

例如收到404的时候,默认就是给用户返回404,但是某些网站为了给用户更好的体验,可能会返回图片,或者一些独立的页面,

例如:

error_page  404  /404.html;
#当收到404返回码时,给用户返回 /404.html 页面

一个例子说明return与error_page的关系:

  1. 当return与error_page同时出现,error_page还有被执行的机会吗?
  2. 当return同时出现在 server配置块 和 location配置块 下,两个return指令是否有 合并 关系?

第一个问题,如果return与error_page同时出现,则error_page是得不到执行的;

第二个问题,前面讲到过,return指令属于 “动作类指令”(另一种指令类型是 “值类指令”),动作类指令不能合并。

而在上面的例子中可以看到 return 403; 是出现在 server{} 配置块中,是属于 SERVER_REWRITE 阶段的;
return 404 "find nothing!"; 是出现在 location{} 配置块中,是属于 REWRITE 阶段的,即 SEVER_REWITE 会在 REWRITE 阶段 前先执行,所以后面的return得不到执行,返回值是第一个return的值。

执行效果演示:

Nginx极客时间:rewrite阶段的rewrite模块:return指令相关推荐

  1. 【极客时间】左耳听风

    极客时间-左耳朵耗子 01程序员如何用技术变现 上 02 程序员如何用技术变现下(2022/9/25) 10 渴望.热情和选择(2022/10月5日) 02 程序员如何用技术变现下 如何让自己的技能变 ...

  2. 本人亲自整理的极客时间设计模式之美的硬核笔记

    由于笔记内容过多,我把它放到语雀上了. 点击我 以下内容是为了让搜索引擎,检测到这篇文章.要阅读体验,请点击上面的连接"点击我",去我的语雀看.对了,我看到语雀那里有投诉的功能,请 ...

  3. 极客时间《软件工程之美》学完感

    最近花了将进两个多月的时间,把极客时间上的专栏<软件工程之美>专栏学完了,同时也把相应的配套书本 ,邹欣的<构建之法>,读完了.学完这个专栏,让我获益良多. 专栏<软件工 ...

  4. 如何将极客时间课程制作成kindle电子书

    订阅了几个极客时间的专栏,一直没有时间去看. 最近,想着如果把内容制作成电子书,利用上下班时间学习一下,岂不是很方便? 在网上搜到一个很好用的开源软件,几分钟就可以把极客时间的专栏做成电子书,简直太棒 ...

  5. 【极客时间】《MySQL45讲》学习笔记

    内容来源:开篇词 | 这一次,让我们一起来搞懂MySQL-极客时间 以下是来自网友对课程的知识点的分类总结: 本章内容[本章内容建议阅读时长] 编号|建议阅读时长|文章标题 1. 基础知识[12'] ...

  6. 极客时间和极客学院_极客在海滩

    极客时间和极客学院 As reported by Jeremy, Andy and Jon, last weekend was a chance for that rare creature – th ...

  7. <极客时间:零基础入门Spark> 学习笔记(持续更新中...)

    看的是极客时间的课,讲得很不错 零基础入门 Spark (geekbang.org) 基础知识 01 Spark:从"大数据的Hello World"开始 准备工作 IDEA安装S ...

  8. 极客时间高级Java工程师体系课2.0

    高级Java性能优化的七个方向 下栽の地止:https://lexuecode.com/6572.html 1.复用优化 在写代码的时候,你会发现有很多重复的代码可以提取出来,做成公共的方法.这样,在 ...

  9. 极客时间-算法训练营1.2 实战题目解析:移动零

    一 序 本文属于极客时间-算法训练营 学习笔记系列. 二 刷题步骤 第一遍 五分钟:读题 + 思考 直接看解法:多看几种,比较解法优劣 背诵.默写好的解法 第二遍 马上自己写 --> Leetc ...

最新文章

  1. R语言glm拟合logistic回归模型:模型评估(模型预测概率的分组密度图、混淆矩阵、准确率、精确度、召回率、ROC、AUC)、PRTPlot函数获取logistic模型最优阈值(改变阈值以优化)
  2. SAP MM Movement Type 503的使用
  3. Android Studio 一些方便使用的设置
  4. 绘画软件优动漫PAINT系统要求
  5. MySQL查看表中的约束
  6. 《算法竞赛进阶指南》 0x30 数学知识 数论 题目
  7. mysql update多条件批量更新_Mybatis中进行批量更新(updateBatch)
  8. XSS-Payloads集合
  9. LeetCode刷题(41)--Sort Color
  10. Redis开发运维实践上线部署规划之持久化设置
  11. javascript权威指南_重读javascript权威指南(3)
  12. idea安装Scala插件
  13. System与Runtime类
  14. c语言银行排队系统链表,银行预约排队系统(数据结构问题)
  15. 发抖音上热门最佳时间 视频MD5修改器苹果手机
  16. Linux快捷键详解
  17. 彩色图像灰度化MFC
  18. 基于STM32的频率计Proteus仿真教程
  19. 对Orders订单表中的常见统计查询
  20. 大型分布式网站架构如何设计

热门文章

  1. 这几天一直在给自己打鸡血~
  2. mysql 多 inner join_mySQL多个INNER JOIN
  3. YOLOv5手把手教你制作VOC格式数据集与模型训练
  4. win10计算机语言超清壁纸,Windows 10 Hero高清桌面壁纸(1920×1200)
  5. IList(T) 方法
  6. me shy是什么歌 抖音make_抖音shy是什么歌 抖音shy歌曲分享
  7. Python算法--IP地址分类
  8. Q1.UNITY2019设置中文
  9. [Android]使用自定义SurfaceView实现幸运转盘效果
  10. 微信php开发用户分组,asp.net微信开发用户分组管理的示例代码