一、引言

上一节讲解了location对于不同的URL进行不同的处理,那么这个rewrite也是负责对URL进行解析,然后通过一系列的判断,最后重写到不同的位置。 举一个小小的例子,比如我们查看Nginx访问日志文件,发现到一个ip地址经常访问我们的网站,而且过于频繁。这个时候我们就可以使用rewirte把这个ip给他限制掉,不让他访问,这个时候使用rewrute就很容易实现了。当然我们rewirte不仅仅只是干这个用的,最重要的是在合适的业务中当中,来重写URL。

二、重写中用到的指令

if (条件) {}  设定条件、在进行重写
set 设置变量,方便多条件判断的时候记录状态
return 返回状态码,如:404、403
break 跳出rewrite
rewirte 重写URL

三、具体用法小实例

if 语法格式: if 空格 (条件) {重写}, if后面记得加空格哟。

那条件又有几种写法呢?

1、"=" 用来判断相等,用于字符串比较。

2、"~" 用正则来匹配(此处正则区分大小写),"~*" 不区分大小写的正则

3、-f 来判断是否为文件、-d 是否为目录、-e 是否存在

实例一:接下来,我们就使用if、return 来实现限制某个ip的访问。同学们先查询本机的ip地址是多少,或者看访问日志也行。当我们知道自己的ip之后,然后就很容易了。

$remote_addr 这个是可以获取到当前访问主机的IP地址,在我们讲日志管理的时候有提到。如果这个$remote_addr = 要限制的ip地址,则返回状态404。 这样一个小小的配置就可以实现限制ip地址的访问了。

实例二:接下来我们使用正则表达式来判断,我们判断当我们使用火狐浏览器的时候,跳转到指定的页面。小编电脑上只有火狐、谷歌浏览器,小伙伴也可以使用其他的浏览器哟。

$http_user_agent 包含着我们请求时所使用的浏览器信息,然后使用正则表达式来进行判断。firefox.html这个页面是小编事先创建好的哟,不要以为自带的。如果信息中包含来Firefox的信息,则重写到firefox.html页面。

rewrite ^.*$ /firefox.html; "^.*$"代表着访问全部的页面,"/firefox.html"则代表重写页面。

记住这里一定得加上break; 不然会出现500的错误。因为不加上break,在重写到firefox页面的时候,还是会进行判断是否是火狐浏览器,则一直死循环在判断所以会出现500的错误, 加上break就跳出rewirte来。

实例三:如果访问一个不存在的页面,往往是会提示404,那如果想当找不到指定文件时,重写到一个自定义的404页面去。首先我们得拿到请求的页面是什么,我们可以查看到conf/fastcgi.conf配置文件,记录着Nginx全部的变量。

看下图一,记录着Nginx每一个全局变量有什么作用,实现实例三,需要用到$odcument_root$fastcig_script_name

图二:先判断文件是否存在"!-e"不存的意思,则重写的404.html页面。

 

实例四:我们再来做一个实例,如果是火狐浏览器只能访问firefox.html,如果访问其他页面则到404页面去。 这里我们使用set 来实现。

先判断是否是火狐浏览器、如果是则 $isfox =1 ,然在后判断访问的是不是firefox.html页面,如果是则$isfox =0;

最后在根据$isfox 来判断是否等于1 ,如果是1则表示,用火狐浏览器请求的但是又不是firefox.html页面,所以重写到404

四、总结

本章把rewirte常用的指令到做来一个详细的演示,在学习Nginx的教程,是需要一定的开发基础或者是网络基础。如果完全是干干净净的小白,可能都不清楚这个Nginx该如何去访问。如果遇到这样的同学,小编我先建议先确定你想学什么专业,然后再根据不同的专业进行学习。等时机成熟,需要用的Nginx的时候,再回过头来学习Nginx!!!

Ningx实用小技巧——rewrite重写用法讲解相关推荐

  1. 送你16个matplotlib绘图实用小技巧(附代码)

    来源:雪山飞猪 本文约2800字,建议阅读10分钟 本文为你分享16个matplotlib绘图实用小技巧. 标签:数据分析 1. 添加标题-title import numpy as npimport ...

  2. 一个 15 年 SAP ABAP 开发人员分享的 SAPGUI 一些个性化设置和实用小技巧试读版

    零基础 ABAP 学习教程系列文章的目录 ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍 ABAP 标准培训教程 BC400 学习笔记之二 ...

  3. VC的若干实用小技巧

    Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意.作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助. 1:使用vc开发项目时,常会遇到这种 ...

  4. 实用小技巧(一):UIScrollView中上下左右滚动方向的判断

    https://www.jianshu.com/p/93e8459b6dae 2017.06.01 01:13* 字数 674 阅读 1201评论 0喜欢 1 2017.06.01 01:13* 字数 ...

  5. VC的若干实用小技巧 (如何干净的删除一个类)

    Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意.作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助. 1:使用vc开发项目时,常会遇到这种 ...

  6. 总结MySQL建表、查询优化实用小技巧

    MySQL建表阶段是非常重要的一个环节,表结构的好坏.优劣直接影响着后续的管理维护,赶在明天上班前分享总结个人MySQL建表.MySQL查询优化积累的一些实用小技巧. 技巧一.数据表冗余记录添加时间与 ...

  7. mysql建表测试_总结MySQL建表、查询优化实用小技巧

    MySQL建表阶段是非常重要的一个环节,表结构的好坏.优劣直接影响着后续的管理维护,赶在明天上班前分享总结个人MySQL建表.MySQL查询优化积累的一些实用小技巧. 技巧一.数据表冗余记录添加时间与 ...

  8. 20个你应该知道的iPhone 7实用小技巧

    听说iOS 11马上就要发布,再过几个月新版iPhone8也即将上线,你真的会用你的iPhone7了吗?下面我们来介绍几个iPhone7的实用小技巧. 1.输入消息时的光标移动: 有很多新用户在疑惑输 ...

  9. 苹果手机计算机怎样拉到桌面,20个你应该知道的iPhone 7实用小技巧

    本文由那年那个饭桶整理,未经作者授权,请勿转载,感谢您的尊重. 听说iOS11马上就要发布,再过几个月新版iPhone8也即将上线,你真的会用你的iPhone7了吗?下面我们来介绍几个iPhone7的 ...

最新文章

  1. 单目视觉系统检测车辆的测距方法(Mobileye单目测距等7种方法)
  2. rabbitmq中的三种交换器(匹配模式)
  3. 服务器统一计算系统,思科为微软扩展统一计算系统UCS服务器
  4. Failure while trying to resolve exception [org.springframework.http.converter.HttpMessageNotWritabl
  5. mongodb 1安装,开启
  6. 订单额-销售额-回款额的关系您理清楚了吗?
  7. 你的 A/B 测试数据期骗你了吗?
  8. 2018 年,去百度面试 Java 后端的一次面试经历
  9. 摘自缪雪峰的博客的JavaScript个人笔记(3)
  10. 碳酸钡颗粒行业调研报告 - 市场现状分析与发展前景预测
  11. csdn markdown 的使用 (二)
  12. Linux开发_调试与安全_gdb_peda简介
  13. 2018-2019-1 20189221 《构建之法》第 3 周学习总结
  14. Cocos2dx源码记录(3) CCVertexIndexData
  15. H264/AVC-NALU解析
  16. mc用什么版本的java_我的世界网易 Java 版哪个版本比较好?
  17. Redis之单机数据库的实现
  18. 三星Galaxy之父加盟网秦,网秦安全能否脱胎换骨?
  19. 微信小程序 获取用户的昵称和头像
  20. bin文件用cad打开_bin文件怎么用cad打开

热门文章

  1. Swift: iOS底层基础知识-文件目录结构
  2. linux内核启动停止在booting the kernel.
  3. 特征值的几何重复度不大于代数重复度
  4. 大学生毕业前必须做的20件事
  5. POWERBI 使用高级编辑器更换数据源
  6. 山东电销机器人_客服人员,你担心山东百应电销营销机器人系统抢你饭碗吗?...
  7. SOLIDWORKS怎么把STEP曲面转换成实体
  8. CF891E Lust(推式子,EGF)
  9. 听见丨HTC发布新款Vive Pro,采用高分辨率OLED屏并内置耳机 高通在CES上发布新芯片,可将蓝牙耳机续航延长3倍
  10. studio one 4安装教程附带安装包