前端代理怎么设置之rewrite设置方法
以下部分内容由 小红书(www.xiaohongshutuiguang.cn)转载提供 欢迎在评论区留言
rewrite
可以实现URI的重写和重定向,它的用处有很多,常用于URL页面的跳转,兼容旧版本,SEO优化(伪静态),维护(后台维护、流量转发),安全(伪静态)等,它的语法是这样的:
syntax: rewrite regex replacement [flag]
Default: —
Context: server, location, if
如果正则表达式(regex)匹配到了请求的URI(request URI),这个URI会被后面的replacement替换
rewrite的定向会根据他们在配置文件中出现的顺序依次执行
通过使用flag可以终止定向后进一步的处理
一个例子:
rewrite ^/users/(.*)$ /show?user=$1?last;=
flag,标志位是标识规则对应的类型。
flag含义
last先匹配自己的location,然后通过rewrite规则新建一个请求再次请求服务端
break先匹配自己的location,然后生命周期会在当前的location结束,不再进行后续的匹配
redirect返回302昨时重定向,以后还会请求这个服务器
permanent返回301永久重定向,以后会直接请求永久重定向后的域名
1)last
结束当前的请求处理,用替换后的URI重新匹配location
可理解为重写(rewrite)后,发起了一个新请求,进入server模块,匹配location
如果重新匹配循环的次数超过10次,nginx会返回500错误
返回302 http状态码
浏览器地址栏显示重定向后的url
2)break
结束当前的请求处理,使用当前资源,不再执行location里余下的语句
返回302 http状态码
浏览器地址栏显示重定向后的url
3)redirect
临时跳转,返回302 http状态码
0浏览器地址栏显示重地向后的url
4)permanent
永久跳转,返回301 http状态码;
浏览器地址栏显示重定向后的url
例子如下:
location ~ ^/break {
rewrite ^/break /test break;
root /data/html;
}
location ~ ^/last {
rewrite ^/last/testlast;
}
location /test {
default_type application/json;
return 200'{"code":0,"msg":"success"}';
}
location ~ ^/redirect {
rewrite ^/redirect http://www.baidu.com redirect;}
location ~ ^/permanent {
rewrite ^/permanent http://www.baidu.com permanent;}
可以通过curl来测试一下:
curl http://115.29.148.6/breaktest
curl http://115.29.148.6/last{"code":0,"msg":"success"}
curl -vL http://115.29.148.6/redirectcurl -vL http://115.29.148.6/permanent