nginx rewrite规则flag参数 break和 last
来源:互联网 发布:域名被注册局保留 编辑:程序博客网 时间:2024/04/28 14:13
今天把nginx站点配置重新复习下, 做下笔记.
首先从网上看到说localtion 指令是 ngx_http_core_module模块提供的指令, 而且是nginx跟后端服务沟通的桥梁(比如php-fpm), 而rewrite 则是 ngx_http_rewrite_module 提供的指令,同样的还有 if. nginx 处理这两个规则的流程是:
- 进行rewrite规则匹配,根据命中规则改写localtion.
- 如果没有被其他指令中断并退出,则进入localtion匹配.
- 执行匹配成功的localtion区块中的指令.
比如这样一个配置:
server { listen 80; server_name www.wx.com; root /Users/zhangchao/www/weixin; index index.php; # 把abc.html 映射到 index.php rewrite /abc.html /index.php; # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}rewrite规则还有第三个flag参数:可以是redirect, permanent, break, last等等.
redirect, permanent 这两个flag是进行重定向(302临时, 301永久), 重定向以后的url也会显示在地址栏, nginx处理这两个是会中断流程, 通过http请求告诉用户端进行重定向, 也就是这次请求不需要进过后端服务,由nginx全职负责.
# 把abc.html 重定向 success2.html rewrite /abc.html /success2.html permanent;
break 和 last :
这两个flag都会中断当前的rewrite流程, 不再继续匹配后续的rewrite指令. 如果是在 server的顶级部分, 两者的作用相同, 跳过剩下的rewrite指令,进入localtion匹配. 如果rewrite是在server区块顶级if内部, 和直接放在server下级的rewrite行为是一致的.
server { # 此时两者作用一致 rewrite /error1.html /error.html break; rewrite /error2.html /error.html last; # 把 /abc.html?name="success2" 映射到success2.html if ( $arg_name = "success2" ) { rewrite /abc.html /success2.html break; }两者的区别在于当rewrite指令存在于localtion区块时, last跳出localtion块, 重新进行localtion匹配; 而break跳过localtion下的后续rewrite规则, 执行其他指令.
location /error2.html { rewrite /error2.html /error2.html break;# 跳过后续的rewrite规则, 能正常显示error2.html } location /success2.html { rewrite /success2.html /success2.html last;# 重新进行localtion匹配, 无限循环, 服务器会出错 500 }
所有一般情况下, 使用break指令会相对安全, 不会造成循环重定向.
看的博客地址 这里
0 0
- nginx rewrite规则flag参数 break和 last
- nginx rewrite规则之last和break
- nginx rewrite break last
- Nginx rewrite last 和break区别
- nginx中rewrite模块break和last原理详解
- nginx rewrite中last和break的区别
- nginx rewrite中last和break的区别
- nginx rewrite中last和break的区别
- nginx中rewrite模块break和last原理详解
- nginx rewrite 指令last break区别
- nginx rewrite 指令last break区别
- Nginx配置文件的rewrite功能中break和last的差别
- nginx last和break 区别
- 实例区分nginx location中rewrite的break与last
- Nginx中的rewrite指令(break,last,redirect,permanent)
- Nginx中的rewrite指令(break,last,redirect,permanent)
- nginx rewrite规则和参考
- nginx rewrite 指令和规则
- 京东12G用户数据外泄,京东官方承认:源于2013年安全漏洞
- 黑盒测试和白盒测试
- 常见动态网站开发技术对比:JSP、ASP.net、php
- RecycleView的学习和总结
- Docker简单了解
- nginx rewrite规则flag参数 break和 last
- java 代码点 代码单元
- 判断当前显示Activity信息(所属包名)
- Impala与hive相关知识点摘录
- Oracle之选择结构和循环结构
- the world's exclusive varieties
- yii-besic (四) cookie的使用
- 高并发redis实现秒杀商品
- Java Socket编程(二) 几种常见的服务器模型