
地 址:上海市杨浦66号
电 话:14914991954
网址:allin0.com
邮 箱:37550913@qq.com
Nginx是一款高性能的HTTP和(he)反向代理服务器,它具有很多(duo)强(qiang)大的功能,其(qi)中之一就是重写规则(ze),重写规则是Nginx中非常重要的一个(ge)功能,它可以帮助我们实现URL的(de)跳转、缓存控制、负载均衡等功能,本文将详细介绍常用的Nginx rewrite重写规则,帮助大家更好地理解和(he)使用这个功能(neng)。
1、基本语法


Nginx的(de)重写规则主要基于正则表达(da)式,其基本语法如下:

rewrite regex replacement [flag];
regex表示正则表达式,replacement表示替换后的(de)字符串,flag表示可选的标志(zhi)位,如last、break等。
2、常用重写规则(ze)
(1)URL跳转
rewrite ^/old-url$ /new-url permanent;
这条规则表示将所有访问/old-url的(de)请求重定向到/new-url,并使用301永久重定向(xiang)。
(2)URL替换
rewrite ^/old-url$ /new-url;
这条规则表示将所有访问/old-url的请求重定向到/new-url,但不使(shi)用301永久重(zhong)定向(xiang)。
(3)正则表达式替换
rewrite ^/old-pattern$ /new-pattern last;这条规则(ze)表示将所有匹配/old-pattern的请求重定向到/new-pattern,并在匹配成功后停止搜索其他规则。last标志表示只应用最后一个匹配成(cheng)功的规则。
(4)正则表达式替换并添加查询参数(shu)
rewrite ^/old-pattern$ /new-pattern?$ new-param=value last;
这条规则表示将所(suo)有匹配/old-pattern的请求重(zhong)定向到/new-pattern,并添加一个名为new-param的查询参数,其值为value。last标志(zhi)表示只(zhi)应用最后一个匹配成功的规则。
(5)正则表达式替换并删除查询参数
rewrite ^/old-pattern$ /new-pattern? last;这条规则表示将(jiang)所有匹配/old-pattern的(de)请求重定向到/new-pattern,并删除原有的查询参数。last标志表示只应用最后一个匹配成功的规则。
(6)正则表达式替换并(bing)设置HTTP状态码
rewrite ^/old-pattern$ /new-pattern redirect=302 last;这条规则表示将所有匹配/old-pattern的请求重定向到/new-pattern,并设置HTTP状态码为302。last标志表示只应用最后一个匹配成功的规则。
1、Nginx rewrite重写规则中的flag有哪些作用?如何使用?
答:Nginx rewrite重写规则中的(de)flag有以下几种作(zuo)用:
last:只应用最(zui)后一个匹配成功的规则,当存在多个重写规则时,只有最(zui)后一个(ge)匹配成功的规则会被执行,默认情况下,flag不起作用,需要在重写指令后加上last,rewrite ^/old-url$ /new-url last;。
break:停止搜索其他规则,当存在多个(ge)重写规则时,遇到第一个匹配成功的规则后,不再搜索其他规则,默认情况下,flag不起作用,需要在重写指令后加上break,rewrite ^/old-url$ /new-url break;。