Nginx中转发匹配规则的实现方法

  介绍

这篇文章将为大家详细讲解有关Nginx中转发匹配规则的实现方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

<强>一、正则表达式匹配

<李>

~为区分大小写匹配

<李>

~ *为不区分大小写匹配

<李>

!~和! ~ *分别为区分大小写不匹配及不区分大小写不匹配

<强>二、文件及目录匹配

<李>

- f和! - f用来判断是否存在文件

<李>

- d和! - d用来判断是否存在目录

<李>

- e和! - e用来判断是否存在文件或目录

<李>

- x和! - x用来判断文件是否可执行

<强>三。重写指令的最后一项参数为国旗标记,国旗标记有

<李>

最后相当于apache里面的[L]标记,表示重写。

<李>

打破本条规则匹配完成后,终止匹配,不再匹配后面的规则。

<李>

重定向返回302临时重定向,浏览器地址会显示跳转后的URL地址。

<李>

permanent 301年返回永久重定向,浏览器地址会显示跳转后的URL地址。

使用去年和打破实现URI重写,浏览器地址栏不变。

而且两者有细微差别,使用别名指令必须用去年标记;使用proxy_pass指令时,需要使用打破标记.Last标记在本条重写规则执行完毕后,会对其所在服务器{……}标签重新发起请求,而打破标记则在本条规则匹配完成后,终止匹配。

例如:如果我们将类似<代码> URL/照片/123456 重定向到<代码>///照片/12/1234/123456路径。png

rewrite “/照片/([0 - 9]{2})([0 - 9]{2})([0 - 9]{2})“,   rewrite “/道路//照片/1美元/$ 1 $ 2/$ 1 $ 2 $ 3. png",,

<强>四,NginxRewrite规则相关指令

<强> 1,打破指令

使用环境:服务器位置,如果
该指令的作用是完成当前的规则集,不再处理重写指令。

<强> 2,如果指令

使用环境:服务器位置
该指令用于检查一个条件是否符合,如果条件符合,则执行大括号内的语句如果指令不支持嵌套,不支持多个条件,,和| |处理。

<强> 3,返回指令

语法:returncode
使用环境:服务器位置,如果
该指令用于结束规则的执行并返回状态码给客户端。
示例:如果访问的URL以“.sh"或“.bash"结尾,则返回403状态码

位置~,。* \。(sh | bash) ?美元   {   ,return  403;   }

<强> 4,重写指令

语法:<代码> rewriteregex替换标记
使用环境:服务器位置,如果
该指令根据表达式来重定向URI,或者修改字符串。指令根据配置文件中的顺序来执行。注意重写表达式只对相对路径有效。如果你想配对主机名,你应该使用如果语句,示例如下:

如果(,host 美元;~ *,www \。(. *),)   {   ,set  host_without_www 美元,1美元;   美元,rewrite  ^ (. *), http://host_without_www 1美元永久性的;   }

<强> 5,设置指令

语法:setvariable价值;
默认值:没有
使用环境:服务器位置,如果
该指令用于定义一个变量,并给变量赋值。变量的值可以为文本,变量以及文本变量的联合。

设置varname 美元;“hello  world";

<强> 6,Uninitialized_variable_warn指令

语法:uninitialized_variable_warnon |了
使用环境:http服务器,位置,如果
该指令用于开启和关闭未初始化变量的警告信息,默认值为开启。

<强>五。Nginx的重写规则编写实例

<强> 1,当访问的文件和目录不存在时,重定向到某个html文件

如果(,! -e  request_filename 美元)   {   ,rewrite  ^/(. *),美元index.htmllast;   }

<强> 2,目录对换/123456/xxxx ====祝辞,/xxxx吗?id=123456

rewrite  ^ (\ d +)/(+)/,/2美元? id=1美元,去年,

<强> 3,如果客户端使用的是IE浏览器,则重定向到/IE目录下

如果(,http_user_agent 美元;~,MSIE)   {   ,rewrite  ^(. *),美元/ie/1美元,打破;   }

<强> 4,禁止访问多个目录

位置~,^//(cron |模板)   {   ,deny ;   ,打破;   }

Nginx中转发匹配规则的实现方法