天天看点

配置Nginx服务中Rewrite的应用

URL看起来更规范、合理

企业会将动态URL地址伪装成静态地址提供服务

网址换新域名后,让旧的访问跳转到新的域名上

服务端某些业务调整

配置Nginx服务中Rewrite的应用

使用<code>rewrite</code>进行匹配跳转

使用<code>if</code>匹配全局变量后跳转

使用<code>location</code>匹配再跳转

使用<code>if</code>全局变量匹配

使用<code>proxy_ pass</code>反向代理

字符

说明

<code>^</code>

匹配输入字符串的起始位置

<code>$</code>

匹配输入字符串的结束位置

<code>*</code>

匹配前面的字符零次或多次

<code>+</code>

匹配前面的字符一次或多次

<code>?</code>

匹配前面的字符零次或一次

<code>.</code>

匹配除“\n”之外的任何单个字符。使用诸如"[.\n]"之 类的模式,可匹配包括“n”在内的任意字符

<code>\</code>

将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用

<code>\d</code>

匹配纯数字

<code>{n}</code>

重复n次

<code>{n,}</code>

重复n次或更多次

<code>[c]</code>

匹配单个字符c

<code>[a-z]</code>

匹配a-z小写字母的任意一个

<code>[a-zA-Z]</code>

匹配a-z小写字母或A-Z大写字母的任意一 个

标记

<code>last</code>

相当于<code>Apache</code>的<code>[L]</code>标记,表示完成<code>rewrite</code>

<code>break</code>

本条规则匹配完成即终止,不再匹配后面的任何规则

<code>redirect</code>

返回<code>302</code>临时重定向,浏览器地址会显示跳转后的<code>URL</code>地址,爬虫不会更新<code>url</code>

<code>permanent</code>

返回<code>301</code>永久重定向,浏览器地址栏会显示跳转后的<code>URL</code>地址,爬虫更新<code>url</code>

last

break

使用场景

一般写在<code>server</code>和<code>if</code>中

一般使用在<code>location</code>中

<code>URL</code>匹配

不终止重写后的<code>url</code>匹配

终止重写后的<code>url</code>匹配

<code>~</code>

执行一个正则匹配,区分大小写

<code>~*</code>

执行一个正则匹配,不区分大小写

<code>!~</code>

执行一个正则匹配,区分大小写不匹配

<code>!~*</code>

执行一个正则匹配,不区分大小写不匹配

<code>^~</code>

普通字符匹配;使用前缀匹配。如果匹配成功,则不再匹配其他<code>location</code>

<code>=</code>

普通字符精确匹配。也就是完全匹配

<code>@</code>

定义一个命名的<code>location</code>,使用在内部定向时

<code>=</code>类型

<code>^~</code>类型表达式

正则表达式(<code>~</code>和<code>~*</code>)类型

常规字符串匹配类型,按前缀匹配

通用匹配(/),如果没有其它匹配,任何请求都会匹配到

都能实现跳转

<code>rewrite</code>是在同一域名内更改获取资源的路径

<code>location</code>是对一-类路径做控制访问或反向代理,还可以<code>proxy_pass</code>到其他机器

执行<code>server</code>块里面的<code>rewrite</code>指令

执行<code>location</code>匹配

执行选定的<code>location</code>中的<code>rewrite</code>指令

(<code>location =</code>完整路径) &gt; <code>(location ^~</code>完整路径) &gt; <code>(location ~*</code>完整路径) &gt; (<code>location ~</code>完整路径) &gt; (<code>location</code> 完整路径) &gt; (<code>location /</code>)

(<code>location=</code> 目录) &gt; (<code>location ^~</code>目录/) &gt; (<code>location ~</code> 目录) &gt; (<code>location ~*</code>目录) &gt; (<code>location</code> 目录) &gt; (<code>location /</code>)

配置Nginx服务中Rewrite的应用
配置Nginx服务中Rewrite的应用

不能废除旧域名

从旧域名跳转到新域名,且保持其参数不变

配置Nginx服务中Rewrite的应用
配置Nginx服务中Rewrite的应用
配置Nginx服务中Rewrite的应用
配置Nginx服务中Rewrite的应用

开启两台客户机,分别查看两台客户端IP地址,并在服务器配置可以访问的IP地址

配置Nginx服务中Rewrite的应用
配置Nginx服务中Rewrite的应用
配置Nginx服务中Rewrite的应用
配置Nginx服务中Rewrite的应用

将域名<code>http://bbs.accp.com</code>下面的发帖都跳转到<code>http://www.accp.com/bbs</code>,且域名跳转后保持参数不变

在客户机中测试访问

配置Nginx服务中Rewrite的应用
配置Nginx服务中Rewrite的应用

浏览器访问<code>http://www.accp.com/100-(100|200)-100.html</code>跳转到<code>http://www.accp.com</code>页面

在客户机中访问测试

配置Nginx服务中Rewrite的应用
配置Nginx服务中Rewrite的应用

访问<code>http://www.accp.com/upload/1.php</code>跳转到首页

配置Nginx服务中Rewrite的应用
配置Nginx服务中Rewrite的应用

访问一个具体的页面跳转到首页

在测试机中测试访问

配置Nginx服务中Rewrite的应用
配置Nginx服务中Rewrite的应用