首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx rewrite

nginx rewrite

作者头像
dys
发布2018-04-02 17:09:39
1K0
发布2018-04-02 17:09:39
举报
文章被收录于专栏:性能与架构性能与架构

rewrite的作用

rewrite可以实现url的重定向,把用户请求的url转发到另一个url,但用户浏览器地址并不改变

例如常用的伪静态化,就是通过rewrite实现的

/user/123 => /user.php?id=123

语法

rewrite regexreplacement [flag];

regex - 定义url匹配规则

replacement - 要重写的目标url

[flag] - 标志位,是可选项,定义重写后的相关操作

规则说明

(1)rewrite只能放在server{},location{},if{}中

(2)只能对域名后边的除参数外的字符串起作用

例如 http://z.com/a/we/index.php?id=1,只对/a/we/index.php重写,也就是 regex 匹配的是 /a/we/index.php 这个字符串

示例

(1)如果是IE浏览器发出的请求,就把请求转到ie目录下

if ($http_user_agent ~ MSIE) {

rewrite^(.*)$/ie/$1 break;

}

(2)对形如/images/bla_500x400.jpg的文件请求,重写到/resizer/bla.jpg?width=500&height=400地址

rewrite^/images/(.*)_(\d+)x(\d+)\.(png|jpg|gif)$/resizer/$1.$4?width=$2&height=$3? last;

这里适用了标志位-last,意思是这是最后一条rewrite规则

(3)域名跳转

server
{
  listen      80;
  server_name  jump.test.com;
  index index.html index.htm index.php;
  root  /opt/www;
rewrite^/http://www.test.com/;
}

(4)把符合规则的目录转换到其他目录

rewrite^/([0-9a-z]+)job/(.*)$/area/$1/$2;

(5)将文件名转成多级目录下的文件

例如 /job-123-456-789.html 指向/job/123/456/789.html

rewrite^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$/job/$1/$2/jobshow_$3.html last;

flag标志位

last : 相当于Apache的[L]标记,表示完成rewrite

break : 停止执行当前虚拟主机的后续rewrite指令集

redirect : 返回302临时重定向,地址栏会显示跳转后的地址

permanent : 返回301永久重定向,地址栏会显示跳转后的地址

last和break的区别

last不终止重写后的url匹配,即新的url会再从server走一遍匹配流程,而break终止重写后的匹配

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档