专栏首页呆呆熊的技术路一分钟 - ngx_http_rewrite_module模块

一分钟 - ngx_http_rewrite_module模块

return 指令

我们先看官方手册的说明吧:

Syntax:    return code [text];
return code URL;
return URL;
Default: —
Context: server, location, if

示例

location ~ (.*).js$ {
   return 500;  #返回500状态码
}

location ~ (.*).js$ {
   return 500 "error"; #返回500状态码 同时打印error
}

location ~ (.*).js$ {
   return 302 http://www.baidu.com; # 302状态码,跳转到百度
}

注意当使用 return url 指令操作的时候,只能使用302(临时重定向) 301(永久重定向) 类似跳转,而不能使用500或其他状态码。

rewrite 指令

rewrite 指令是一个常用的指令,根据访问url定位真实地址

Syntax:    rewrite regex replacement [flag];
Default: —
Context: server, location, if

下面表示当访问地址以 .js 后缀开头的时候

如果匹配正则表达式成功,就直接重写到js目录下。

location ~ (.*).js$ {
    rewrite (.*) /js/$1 break;
}

注意这个js的目录地址, 是相对于root指定的目录为根目录寻找的。 rewrite第三个参数为break,表示中断,不再继续向下执行.

rewrite第三个参数取值:

last
   使用了last 指令,rewrite 后会跳出location
break
   使用break直接终止继续进行匹配
redirect
    表示302临时重定向
permanent
    表示301永久重定向

是否记录 rewrite_log

Syntax:    rewrite_log on | off;
Default: rewrite_log off;
Context:http, server, location, if

if条件判断

Syntax:    if (condition) { ... }
Default: —
Context: server, location

下面是一些常用的判断示例

if ($http_user_agent ~ MSIE) {
    rewrite ^(.*)$ /msie/$1 break;
}

if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
    set $id $1;
}

if ($request_method = POST) {
    return 405;
}

if ($slow) {
    limit_rate 10k;
}

if ($invalid_referer) {
    return 403;
}

本文分享自微信公众号 - 呆呆熊的技术路(gh_93f28f51010a),作者:近视小猴子

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 设计模式第三讲-装饰者模式

    装饰模式也算一种比较常见的设计模式,工作过程中很少刻意的去实现这种模式,因为这种模式也会带来一些问题。

    用户2825413
  • 设计模式第八讲-状态模式

    状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化.

    用户2825413
  • wokerman thrift调试历程

    用户2825413
  • 代码迁移之旅(二)- 渐进式迁移方案

    说在前面 这是代码迁移的第二篇文章,也是最后一篇了,由于个人原因,原来的迁移我无法继续参与了,但完整的方案我已经准备好了,在测试环境也已经可以正常进行了。 上篇...

    枕边书
  • Clickjacking简单介绍

    今天没有原创文章发了,从乌云知识库里选了一个文章给大家分享一下,不知道这种方式,大家是否能够接我从乌云知识库里选择一些文章给大家分享,请大家给我提出来,我来根据...

    信安之路
  • 这一次,彻底理解JavaScript深拷贝

    要理解JS中数据是如何存储的,就要先明白其内存空间的种类。下图就是JS的内存空间模型。

    dellyoung
  • 每天一道leetcode240-在二维数组中搜索n升级版

    https://leetcode.com/problems/search-a-2d-matrix-ii/

    乔戈里
  • Lucene.net(4.8.0) 学习问题记录四: IndexWriter 索引的优化以及思考

    前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移。因为项目整体要迁移到ASP.NET Core ...

    ShenduCC
  • LeetCode387 First Unique Character in a String

    Given a string, find the first non-repeating character in it and return it’s ind...

    用户1665735
  • 如何写出一个惊艳面试官的深拷贝

    最近经常看到很多 JavaScript手写代码的文章总结,里面提供了很多 JavaScriptApi的手写实现。

    Nealyang

扫码关注云+社区

领取腾讯云代金券