URL 重写 rewrite
语法:rewrite regex replacement [flag];
rewrite :固定写法
regex:正则表达式,
replacement:替换重写后的url
[flag]:
break
:跳出,不会执行到下一个locateredirect
:重定向,前端返回302,将重写后的url返回给客户端(也可以方便用来检测自己的重写是否正确)permanent
:返回301状态码,重写url返回客户端与,redirect相似last
:终止请求在该location匹配,重写转发到其他的location
实战例子
需求描述
实现例如 http://10.1.1.111/api/order 的请求可以转发到 http://10.1.1.10:8080/order的转发
其主要的目的是根据/api/的请求 转发给10.1.1.10:8080
中去,并且*`剔除掉请求中的/api/**
配置如下
upstream spboot {
server 10.1.1.10:8080;
}
server {
listen 80;
server_name spboot;
location /api/ {
rewrite ^(/api)(.*)$ $2 break;
proxy_pass http://spboot;
keepalive_timeout 60s;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
}
}
参考官方文档:
http://nginx.org/en/docs/http/converting_rewrite_rules.html
http://nginx.org/en/docs/http/ngx_http_rewrite_module.html