nginx学习之rewrite
rewrite 语法学习
什么是rewrite
nginx的rewrite主要功是实现URL地址重写。nginx的rewrite规则需要PCRE的支持,既可以通过Perl兼容正则表达式进行规则匹配。nginx在默认编译安装时就会安装rewrite。
rewrite的语法
Syntax: rewrite regex replacement [flag];
Default: —
Context: server, location, if
所属模块:
rewrite属于ngx_http_rewrite_module模块
语法简介:
rewrite为关键字固定写法regex为perl兼容正则表达式语句,用来进行规则匹配replacement重写后的URLflagrewrite支持的flag标记
可选的flag参数可以是其中之一:
last:
停止执行当前这一轮的ngx_http_rewrite_module指令集,然后查找匹配改变后URI的新location;
break:
停止执行当前这一轮的ngx_http_rewrite_module指令集;
redirect:
在replacement字符串未以http://或https://开头时,使用返回状态码为302的临时重定向;
permanent:
返回状态码为301的永久重定向。
rewrite指令执行先后的顺序是其该指令在nginx配置文件中的出现的位置rewrite指令在其正则表示式匹配的地方的只对部分域名后面的URL进行匹配
例: 当一个访问的URL为http://www.drjc.com/data/list.html那么rewrite的regex(正则表达式)匹配的为/data/list.html- 如果
replacement的字符串以http://或https://开头,nginx将结束执行过程,并返回给客户端一个重定向。 - 在对rewrite指令的last和break标志的使用可以参考下面的建议:
使用rewrite指令在根location(也就是 `location /`) 和server{}区块时建议使用`flag`标志为`last`标志;
如果在普通的location区块中必须不能使用last,建议使用break标志;
在if{}指令中建议使用break标志;
如果正则表达式中包含字符“{}”或者“;”整个正则表达式应该被包含在单引号或双引号的引用中;
- 如果replacement字符串包括新的请求参数,以往的请求参数会添加到新参数后面。如果不希望这样,在replacement字符串末尾加一个问号“?”,就可以避免
比如:
rewrite ^/users/(.*)$ /show?user=$1? last;
nginx学习之rewrite的更多相关文章
- Nginx学习总结
2017年2月23日, 星期四 Nginx学习总结 Nginx是目前比较主流的HTTP反向代理服务器(其企业版提供了基于TCP层的反向代理插件),对于构建大型分布式web应用,具有举足轻重的作用.简单 ...
- Nginx学习---Nginx的详解_【all】
1.1. Nginx简介 1.什么是nginx nginx:静态的,开源的www软件,可以解析静态的小文件(低于1M ),支持高并发占用较发少的资源(3W并发,10个进程,内存150M),跨平台 te ...
- Nginx学习之从零搭建静态资源网站
前言 在某学习网站学习了nginx的安装和使用,以此文记录. 环境准备 安装在VMWare下的Centos虚拟机.由于我这是新装的虚拟机.所以很多插件都没有,这里干脆一次性安装上. wget ...
- Nginx学习一路向西
Nginx 学习一路向北 Java大猿帅成长手册,GitHub JavaEgg ,N线互联网开发必备技能兵器谱 1. Nginx简介 1.1 Nginx 概述 NGINX是一个免费.开源.高性能.轻量 ...
- thinkphp nginx php-fpm url rewrite 导致 404 错误
## thinkphp nginx php-fpm url rewrite 导致 404 错误 之前thinkphp的系统部署在apache上,考虑到在并发性能nginx比apache强悍得多,所以在 ...
- Nginx学习回顾总结 部分:
21:46 2015/11/9Nginx学习回顾总结进程间通信,近似于socket通信的的东西:才发现这种通信并不是很难,并不是我想象的那样很多内容,新领域,入门只是几个函数的使用而已.以前猜过是这样 ...
- nginx重写规则报nginx: [emerg] directive "rewrite" is not terminated by ";"
对于下面的重写规则 rewrite ^/gongying/([\d]{8})_([\d]+).html$ /index.php?app=support&act=view&pts=$1& ...
- Nginx 之四: Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能
一:Nginx 后端服务器组的配置: 1.upstream: 用于设置后端服务器组的主要指令,upstream类似于之前的server块或http块,用法如下: upstreame Myserver{ ...
- Nginx学习笔记4 源码分析
Nginx学习笔记(四) 源码分析 源码分析 在茫茫的源码中,看到了几个好像挺熟悉的名字(socket/UDP/shmem).那就来看看这个文件吧!从简单的开始~~~ src/os/unix/Ngx_ ...
随机推荐
- Zabbix 3.2.4至3.2.7的升级方案
1.关闭Zabbix Server 防止有新的数据提交到数据库中,也可以关闭数据库.如果更新过程中,评估告警信息可以忽略,可以先执行备份操作. 1.1.检查当前版本 /usr/local/zabbix ...
- bzoj2151 种树 双向链表+堆
2151: 种树 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1151 Solved: 613[Submit][Status][Discuss] ...
- ASP.NET根据当前时间获取,本周,本月,本季度等时间段
DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek. ...
- Mybatis学习之道(一)
本例子为采用的mysql+maven+mybatis构建. 初步学习mybatis: mybatis为一个半自动框架,相对于hibernate来说他更加轻巧,学习成本更低. 1.新建一个maven工程 ...
- Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer错误解决办法
严重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"] java. ...
- Visual Studio 环境路径答疑!
工程目录结构如下: Console │ Console.sln │ Console.VC.db │ ├─Console │ │ Console.cpp │ │ Console.vcxproj │ │ ...
- UVA - 10048 Audiophobia Floyd
思路:套用Floyd算法思想,d(i, j) = min(d(i,j), max(d(i,k), d(k,j)),就能很方便求得任意两点之间的最小噪音路径. AC代码 #include <cst ...
- linux_group总结
group_name:passwd:GID:user_list 在/etc/group 中的每条记录分四个字段: 第一字段:用户组名称: 第二字段:用户组密码: 第三字段:GID 第四字段:用户列表, ...
- 关于 target="_blank"漏洞的分析
创建: 于 八月 30, 2016 关于 target="_blank"漏洞的分析 一.漏洞详情:首先攻击者能够将链接(指向攻击者自己控制的页面的,该被控页面的js脚本可以对母页 ...
- 【linux】php安装 出现Sorry, I cannot run apxs. ***错误解决方法
首先, 通过错误提示, 我们得知"I cannot run apxs". 我一直以为是apxs安装有问题, 但找了很久仍未得到合理的解释和解决方法. 于是我直接运行"/u ...