Nginx高级之Rewrite规则
进阶阶段的回顾:
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规则相关推荐
- 实例讲解Nginx下的rewrite规则 来源:Linux社区
一.正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配,其中: * -f和!-f用来判断是否 ...
- nginx配置以及rewrite规则
1 location正则写法 语法规则: location [=||*|^~] /uri/ { - } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.ng ...
- 【Nginx实战】rewrite规则详解
Nginx的rewrite功能和apache一样,主要是实现URL地址的重定向.Nginx的rewrite功能是由PCRE软件支持,rewrite模块即 ngx_http_rewrite_module ...
- Nginx Rewrite规则初探
Nginx rewrite(nginx url地址重写) Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要N ...
- 第七章:nginx的rewrite规则详解
模块ngx_http_rewrite_module 该ngx_http_rewrite_module模块用于使用PCRE正则表达式更改请求URI,返回重定向,并有条件地选择配置. 句法: break; ...
- Nginx高级应用--负载均衡、rewrite规则
Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...
- nginx配置location总结及rewrite规则写法
原文连接:http://seanlook.com/2015/05/17/nginx-location-rewrite/ 1. location正则写法 一个示例: 1 2 3 4 5 6 7 8 9 ...
- nginx的url重写[rewrite规则和参考]
本日志内容来自互联网和平日使用经验,整理一下方便日后参考. Nginx Rewrite 相关指令有 if.rewrite.set.return 等. if 的语法 应用于 server 和 locat ...
- apache rewrite 规则转换 nginx rewrite 的网站
在将网站apache迁移到nginx时 相信不少人头疼rewrite规则的转换 偶然间发现下面的网站 感觉不错 推荐给大家 http://www.anilcetin.com/convert-apach ...
最新文章
- 句号一定要划在句子最美的地方
- 听完411头猪的哼哼,他们找到了理解“猪语”的算法 | Scientific Reports
- 项目进度,你汇报清楚了么?
- python bottle框架 运维_python bottle框架(WEB开发、运维开发)教程 | linux系统运维...
- 如何使用 controllerExtensions 给 SAP Fiori Elements List Report 的表格注册事件响应函数
- Starlink的20ms延迟怎么计算得到的?
- 26. The Greenhouse Effect and Its Consequences 温室效应及其后果
- RedHat Linux 5企业版安装telnet
- 计算机怎么远程桌面,电脑怎么打开远程桌面连接功能
- 怎样用硬盘启动计算机,电脑新增了硬盘,在bios中怎么设置硬盘启动,来看看具体操作步骤...
- 传教士与野人过河问题 人工智能实验算法
- 2017 终点亦是起点
- php开发API接口的代码案例
- 企业防病毒体系建设的探讨
- html 滚动图片代码
- 老师利用计算机分析学生成绩属于什么,计算机二级考试真题-Excel-小蒋-老师学生成绩分析...
- Android基础——从存储介质打开文档
- 跑在SOA上的出版社
- Python 繁简转换
- 网站友链交换注意事项
热门文章
- 【Deep Learning】Deep Residual Shrinkage Networks for Fault Diagnosis(深度残差收缩网络)
- 搭建自己的ebook网站
- 微信开发者工具地址自动跳转https问题处理
- linux grep命令
- [导入]屏蔽淘宝网的方法
- 把自己这一年里的目标写在一张纸上---莱昂纳多·瑞兹曼
- xfire调用php,spring 组合xfire使用的详细配置
- 【苹果相册推送iMessage】群发公用推送服务器(APNS)
- 强化学习(八):Dyna架构与蒙特卡洛树搜索MCTS
- AI on Android:安卓平台上的人工智能应用实战(02.模型的再训练)