一、正则表达式匹配

  1. ~ 为区分大小写匹配
  2. ~* 为不区分大小写匹配
  3. !~!~* 分别为区分大小写不匹配及不区分大小写不匹配

二、文件及目录匹配

  1. -f!-f 用来判断是否存在文件
  2. -d!-d 用来判断是否存在目录
  3. -e!-e 用来判断是否存在文件或目录
  4. -x!-x 用来判断文件是否可执行

三.rewrite指令的最后一项参数为flag标记,flag标记有

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

使用 lastbreak 实现URI重写,浏览器地址栏不变。
而且两者有细微差别,使用alias指令必须用 last标记;使用proxy_pass指令时,需要使用break标记。Last标记在本条rewrite规则执行完毕后,会对其所在server{……}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配。例如:如果我们将类似URL/photo/123456 重定向到 /path/to/photo/12/1234/123456.pn

四、NginxRewrite规则相关指令1、break指令
使用环境:serverlocationif
该指令的作用是完成当前的规则集,不再处理rewrite指令。2、if 指令
使用环境:serverlocation
该指令用于检查一个条件是否符合,如果条件符合,则执行大括号内的语句。If指令不支持嵌套,不支持多个条件&&和||处理。3、return指令
语法:returncode
使用环境:serverlocationif
该指令用于结束规则的执行并返回状态码给客户端。示例:如果访问的URL以".sh"或".bash"结尾,则返回403状态码

4、rewrite 指令
语法:rewriteregex replacement flag
使用环境:serverlocationif
该指令根据表达式来重定向URI,或者修改字符串。指令根据配置文件中的顺序来执行。注意重写表达式只对相对路径有效。如果你想配对主机名,你应该使用if语句,示例如下:

5、Set指令
语法:setvariable value ;
默认值:none
使用环境:serverlocationif
该指令用于定义一个变量,并给变量赋值。变量的值可以为文本、变量以及文本变量的联合。

6、Uninitialized_variable_warn指令
语法:uninitialized_variable_warnon|off
使用环境:httpserverlocationif
该指令用于开启和关闭未初始化变量的警告信息,默认值为开启。
五.Nginx的Rewrite规则编写实例1、当访问的文件和目录不存在时,重定向到某个html文件

2、目录对换 /123456/xxxx ====> /xxxx?id=123456

3、如果客户端使用的是IE浏览器,则重定向到/ie目录下

4、禁止访问多个目录

5、禁止访问以/data开头的文件

6、禁止访问以.sh,.flv,.mp3为文件后缀名的文件

7、设置某些类型文件的浏览器缓存时间

8、给favicon.ico和robots.txt设置过期时间

这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志

9、设定某个文件的过期时间;这里为600秒,并不记录访问日志

10、文件反盗链并设置过期时间

这里的return412 为自定义的http状态码,默认为403,方便找出正确的盗链的请求

11、只允许固定ip访问网站,并加上密码

12、将多级目录下的文件转成一个文件,增强seo效果

13、文件和目录不存在的时候重定向:

14、将根目录下某个文件夹指向2级目录

15、域名跳转

16、多域名转向

六、nginx全局变量

七、Apache和Nginx规则的对应关系

例如:允许指定的域名访问本站,其他的域名一律转向www.linuxidc.net

Nginx过滤示例:

总结

后端开发是一个最接近全栈的一个职业,前端不够用后端顶上写页面JS,没有运维不要紧后端来维护服务器,总之一个好的后端就是能面面俱到。

c++ 检查缓冲大小与记录大小是否匹配_后端程序员不得不会的 Nginx 转发匹配规则...相关推荐

  1. sql 只取一条记录_后端程序员必备:书写高质量SQL的30条建议

    前言 本文将结合实例demo,阐述30条有关于优化SQL的建议,多数是实际开发中总结出来的,希望对大家有帮助. 1.查询SQL尽量不要使用select *,而是select具体字段. 反例子: sel ...

  2. 前端flv.js设置缓冲时间和大小_好程序员web前端细解cookie那些事

    好程序员web前端细解cookie那些事,在互联网时代,IT行业飞速发展,带动了web前端开发行业的兴趣.由于行业新兴起时间不久,专业人才缺乏,薪资待遇较高,已成为众多IT学子选择就业的首选,今天就为 ...

  3. java虚拟机 大小端_每个程序员都应当知道的“大小端”

    概述 机器是分大小端的,这对我们编程有什么影响呢?什么又是大小端呢?也许我们很多时候都不清楚,但仍然可以很好地使用电脑,或者编写代码.但我认为<圣经>里有句话说得很好,"你应该了 ...

  4. python排序三个数大小_python三个数从小到大排序_后端开发

    python中range()函数怎么用_后端开发 python中range()函数的用法:python中range()函数可创建一个整数列表,一般用在for循环中.语法为range(start,sto ...

  5. angular2学习记录-给后端程序员的经验分享

    1.前言 前几天刚下定决心把毕业设计改造下,因为毕业设计算是我学习的基石,学习到的东西都尽可能的在这个平台上施展,锻炼自己.改造为前后端分离,前端使用angular2,后端只提供接口.便于以后的维护. ...

  6. 工作记录 - 时间都去哪了 送给迷茫的程序员

    2013年 7月 至 8月 正式工作,并 参加新人培训 8月 至 9月 进入项目组, 为了应付工作先后复习了 <搜索引擎优化(SEO)知识完全手册>,<Maven实战>,< ...

  7. mysql 每条记录大小_计算数据库中各个表的数据量和每行记录所占用空间

    很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tablespaceinfo ( nameinfo VARCHAR(500) , row ...

  8. 手机如何看python文件大小_如何安全地检查上传文件的大小?(How to check size of uploaded file safely in bottlepy?)...

    如何安全地检查上传文件的大小?(How to check size of uploaded file safely in bottlepy?) 我真的害怕read()操作,因为它使用内存. 例如,任何 ...

  9. (转)【mysql元数据库】使用information_schema.tables查询数据库和数据表信息 ---数据记录大小统计...

    转:https://www.cnblogs.com/ssslinppp/p/6178636.html https://segmentfault.com/q/1010000007268994?_ea=1 ...

最新文章

  1. linux 锁定重要文件 更改重要命令
  2. 2019年度最全IT吃瓜指南
  3. Retrofit 注解参数详解
  4. h5 php js实验总结,H5学习_番外篇_PHP数据库操作
  5. 我的Dll(动态链接库)学习笔记(转)
  6. eclipse建maven pom报错
  7. 怎样使用 ASP.NET Optimization Bundling压缩样式表和脚本
  8. 强悍的 Linux —— 网络
  9. MySQL 删除数据库中所有表、所有存储过程命令
  10. WIN2008R2激活工具
  11. 马哥python培训班靠谱吗
  12. 完整缓和曲线和非完整缓和曲线交点法坐标计算应用
  13. 内网渗透建立代理通道(如何攻击目标内网机器?)-Socks代理(゚益゚メ) 渗透测试
  14. 数据分析之Excel
  15. HTML5中的全局属性
  16. java实现pdf文件下载
  17. 基于java的滑雪场学具租赁管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  18. PCB软件使用之mechanical机械层
  19. MDK中自动添加程序编译日期版本
  20. 人工智能助力新零售,无人售货柜降至6000元

热门文章

  1. ESP8266-01学习笔记01:如何使用USB转串口对ESP-01进行入门调试、烧录固件?
  2. SQL注入-SQL注入的WAF绕过(十六)
  3. 如何利用计算机完成科研项目,承担科研项目情况怎样填写
  4. php控制文本换行,css如何控制文字换行方式?(代码示例)
  5. 操作 神通数据库_国产数据库最好的时代
  6. mysql dump 选项_mysqldump的几个主要选项探究
  7. Linux安装net的工具,centos7安装netbox(不错开源网络管理工具) – 运维那些事
  8. 小猿圈Java学习之通过命令行设置属性值
  9. LVM逻辑卷的管理--创建LVM、扩容,快照实战
  10. 日志采集框架Flume、Flume介绍、概述、运行机制、Flume采集系统结构图(1、简单结构、复杂结构)...