Nginx学习(2)

来源:互联网 发布:淘宝专业版免费的模板 编辑:程序博客网 时间:2024/05/29 16:36

Rewrite

Rewrite模块

功能:用来执行URL重定向。这个机制有利于去掉恶意访问的url,也有利于搜索引擎优化(SEO)

Nginx使用语法源于Perl兼容正则表达式(PCRE)库,基本语法如下:

^ : 必须以^后的实体开头
$ :必须以$前的实体结尾
. :匹配任意字符
[] :匹配指定字符集内的任意字符
[^] :匹配任何不包括在指定字符集内的任意字符串
| :匹配|之前或之后的实体
() :分组,组成一组用于匹配的实体,通常会有|来协助

捕获子表达式,可以捕获放在()之间的任何文本,比如:

^(.*)(hello|sir)$ 字符串为hi sir
捕获的结果: 这些被捕获的数据,在后面就可以当变量一样使用了

内部请求

外部请求是客户端的url,内部请求是Nginx通过特殊的指令触发。比如:

error_page index rewrite try_files include等等

内部请求分成两种类型

  1. 内部重定向: URI被改变,可能会匹配到其他的Location
  2. 子请求: 比如使用Addition模块,指令add_after_body 允许你在原始的URI之后指定一个URI,会把该URI被处理之后的结果,插入到原始的URI的body中。

内部重定向示例:

server {    server_name www.xxx.com    location /xxx/ {        rewrite ^/abc/(.*)$ /bcd/$1    }    location /bcd/ {        internal;        root pages;    }}

条件结构的基本语法

  1. 没有操作符: 指定的字符串或者变量不为空, 也不为0开始的字符串, 取true
  2. =,!= :
    例:if($request_method=POST){…}
  3. ~,~*,!~,!~* :
    例: if($uri~* “\.jsp\$”){…}
  4. -f,!-f : 用来测试指定文件是否存在
    例: if(-f $request_filename)
  5. -d,!-d: 用来测试指定目录是否存在
  6. -e,!-e: 用来测试指定文件、目录或者符号连接是否存在
  7. -x,!-x: 用来测试指定文件是否存在和是否可以执行
  8. break: 跳出if块
  9. return: 终止处理,并返回一个指定的http状态码
  10. set: 初始化或者重定义一个变量
原创粉丝点击