Nginx rewrite 用法:用 rewrite 去除 URL 中的特定参数
日常服务中经常会用 Nginx 做一层代理转发,把 Nginx 当做前置机。
比如,以下配置:
server {
# 对外暴露 80 端口
listen 80;
server_name 192.168.10.231;
# 后端 API 地址暴露为:http://192.168.10.231/apis
location /apis {
proxy_pass http://127.0.0.1:8000/;
proxy_pass_request_headers on;
# 重写 URL 去除 /apis
rewrite "^/apis/(.*)$" /$1 break;
}
}
这里的 rewrite 就是为了去除 URL 中的 /apis,实际的后端 API 中是没有这个参数的,但是为了在 Nginx 转发请求时进行区分,前端需要加上这个参数。
比如前端的请求地址是:
http://192.168.10.231/apis/user
那么实际上经过 Nginx 转发后请求的地址是:
http://127.0.0.1:8000/user
rewrite "^/apis/(.*)$" /$1 break,路径重写:
(1) "^/apis/(.*)$":匹配路径的正则表达式,用了分组语法就是 (.*),把 /apis/ 以后的所有部分当做第 1 组;
(2) /$1:重写的目标路径,这里用 $1 引用前面正则表达式匹配到的分组(组编号从 1 开始,也就是 /apis/ 后面的部分),即 /apis/ 后面的所有内容。这样新的路径就是除去 /apis/ 以外的所有,就达到了去除 /apis 前缀的目的。
break:指令,常用的有 2 个,分别是:last、break;
(1) last:重写路径结束后,将得到的路径重新进行一次路径匹配;
(2) break:重写路径结束后,不再重新匹配路径。
1464



被折叠的 条评论
为什么被折叠?



