进阶阶段的回顾:

Nginx进阶之静态Web资源服务

Nginx进阶之代理服务

Nginx进阶之负载均衡服务

Nginx进阶之缓存服务和动静分离

作用及应用场景

作用: 实现对URL的重写以及对匹配(正则表达式)的url的重定向

场景:

1. URL访问跳转, 支持开发设计

① 页面跳转  ② 兼容性支持  ③ 展示效果

2. SEO优化

3. 维护

① 后台维护  ② 流量转发

4. 安全

① 伪静态页面

配置语法

systax: rewrite [正则表达式 替换前的URL] [替换后的URL] [标识];

default: 无配置

context: server域/location域/if判断里

配置实例: rewrite ^(.*)$ /pages/maintain.html break;  # 把所有的请求都跳转至maintain.html页面, break是一个标识符.

正则表达式

常用的正则表达式规则:

. 匹配除换行符以外的任意字符
? 重复0次或1次
+ 重复1次或多次
* 最少链接数, 哪台服务器的连接数少就往那台服务器分发
\d 匹配数字
^ 匹配字符串的开始
$ 匹配字符串的结尾
{n}

重复n次

{n,} 重复n或更多次
[c] 匹配单个字符c
[a-z] 匹配a-z小写字母中的任意一个
\ 转义字符, 如: 转义一个后缀的点(index\.html$)
() 匹配括号之间的内容, 通过$1、$2调用

$1、$2的举例:

if($http_user_agent ~ MSIE){rewrite ^(.*)$ /msie/$1 break;  //(.*) 匹配所有文件名, 将其路径改为/msie/[该文件名]
}

FLAG

flag是一个标识位, 标识rewrite的类型

last 停止rewrite的检测
break 停止rewrite的检测
redirect 返回302临时重定向, 地址栏会显示跳转后的地址
permanent 返回301永久重定向, 地址栏会显示跳转后的地址(后面再次访问也会定向至该地址, 除非清理缓存)

break / last:

进入default.conf配置:

此时:

① 访问 http://192.168.19.136/test/  返回  {"status":"success"}

② 访问 http://192.168.19.136/break  返回  404

③ 访问 http://192.168.19.136/last  返回  {"status":"success"}

结论:

当访问带有/test/的url时, 默认返回{"status":"success"}; 当访问带有/break的url时, rewrite至/test/的路径下, 由于找不到该目录的存在, 返回404; 当访问带有/last的url时, rewrite至/test/的目录下, 再重新以这个rewrite的url进行又一次请求, 此时跟第①种情况一样, 所有返回{"status":"success"}.

redirect / permanent:

进入default.conf配置:

测试① redirect的效果

1) 把last开启, 注释掉redirect, 重启nginx, 访问: http://192.168.19.136/last

2) redirect开启, 注释掉last, 重启nginx, 继续访问: http://192.168.19.136/last

结论:

对于last, 则直接返回200, 对于redirect, 则会先重定向至指定地址, 返回302和重定向的地址, 并再次请求, 返回200.

测试② redirect和permanent的区别

1) redirect开启, permanent注释掉, 重启nginx, 访问: http://192.168.19.136/Milky-Way

此时关闭nginx服务, 并再次访问: http://192.168.19.136/Milky-Way

2) permanent开启, redirect注释掉, 访问: http://192.168.19.136/Milky-Way

此时关闭nginx服务, 并再次访问: http://192.168.19.136/Milky-Way

结论:

redirect: 临时重定向功能, 当nginx服务端关闭之后, 再次访问时会再次向服务端发出请求, 此时肯定无法给出响应, 也就无法访问成功;

permanent: 永久重定向功能, 当nginx服务端关闭之后, 再次访问时不需要再次向服务端发出请求, 此时直接跳转, 返回200状态码.

规则场景

场景①

需要两台服务器: 192.168.19.136 和 192.168.19.143

136服务器配置:

143服务器配置: 需要新建一个121.html文件

启动服务器, 分别访问: 192.168.19.136/course-11-22-33.html / 192.168.19.136/nginx / 192.168.19.136/你好

结果:

③ 重定向至百度搜索

注: rewrite规则的优先级: rewrite规则书写在不同的地方其优先级不同(http域 > server域 > location域)

Nginx高级之Rewrite规则相关推荐

  1. 实例讲解Nginx下的rewrite规则 来源:Linux社区

    一.正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配,其中: * -f和!-f用来判断是否 ...

  2. nginx配置以及rewrite规则

    1 location正则写法 语法规则: location [=||*|^~] /uri/ { - } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.ng ...

  3. 【Nginx实战】rewrite规则详解

    Nginx的rewrite功能和apache一样,主要是实现URL地址的重定向.Nginx的rewrite功能是由PCRE软件支持,rewrite模块即 ngx_http_rewrite_module ...

  4. Nginx Rewrite规则初探

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

  5. 第七章:nginx的rewrite规则详解

    模块ngx_http_rewrite_module 该ngx_http_rewrite_module模块用于使用PCRE正则表达式更改请求URI,返回重定向,并有条件地选择配置. 句法: break; ...

  6. Nginx高级应用--负载均衡、rewrite规则

    Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...

  7. nginx配置location总结及rewrite规则写法

    原文连接:http://seanlook.com/2015/05/17/nginx-location-rewrite/ 1. location正则写法 一个示例: 1 2 3 4 5 6 7 8 9 ...

  8. nginx的url重写[rewrite规则和参考]

    本日志内容来自互联网和平日使用经验,整理一下方便日后参考. Nginx Rewrite 相关指令有 if.rewrite.set.return 等. if 的语法 应用于 server 和 locat ...

  9. apache rewrite 规则转换 nginx rewrite 的网站

    在将网站apache迁移到nginx时 相信不少人头疼rewrite规则的转换 偶然间发现下面的网站 感觉不错 推荐给大家 http://www.anilcetin.com/convert-apach ...

最新文章

  1. 句号一定要划在句子最美的地方
  2. 听完411头猪的哼哼,他们找到了理解“猪语”的算法 | Scientific Reports
  3. 项目进度,你汇报清楚了么?
  4. python bottle框架 运维_python bottle框架(WEB开发、运维开发)教程 | linux系统运维...
  5. 如何使用 controllerExtensions 给 SAP Fiori Elements List Report 的表格注册事件响应函数
  6. Starlink的20ms延迟怎么计算得到的?
  7. 26. The Greenhouse Effect and Its Consequences 温室效应及其后果
  8. RedHat Linux 5企业版安装telnet
  9. 计算机怎么远程桌面,电脑怎么打开远程桌面连接功能
  10. 怎样用硬盘启动计算机,电脑新增了硬盘,在bios中怎么设置硬盘启动,来看看具体操作步骤...
  11. 传教士与野人过河问题 人工智能实验算法
  12. 2017 终点亦是起点
  13. php开发API接口的代码案例
  14. 企业防病毒体系建设的探讨
  15. html 滚动图片代码
  16. 老师利用计算机分析学生成绩属于什么,计算机二级考试真题-Excel-小蒋-老师学生成绩分析...
  17. Android基础——从存储介质打开文档
  18. 跑在SOA上的出版社
  19. Python 繁简转换
  20. 网站友链交换注意事项

热门文章

  1. 【Deep Learning】Deep Residual Shrinkage Networks for Fault Diagnosis(深度残差收缩网络)
  2. 搭建自己的ebook网站
  3. 微信开发者工具地址自动跳转https问题处理
  4. linux grep命令
  5. [导入]屏蔽淘宝网的方法
  6. 把自己这一年里的目标写在一张纸上---莱昂纳多·瑞兹曼
  7. xfire调用php,spring 组合xfire使用的详细配置
  8. 【苹果相册推送iMessage】群发公用推送服务器(APNS)
  9. 强化学习(八):Dyna架构与蒙特卡洛树搜索MCTS
  10. AI on Android:安卓平台上的人工智能应用实战(02.模型的再训练)