location /api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:80;
proxy_connect_timeout 2;
proxy_read_timeout 50;
rewrite "^/api/(.*)$" /$1 break;
}
rewrite指令可以用于修改请求地址,实际操作的语法是:rewrite regex replacement [flag];
这个rewrite可以出现的上下文是:server , location , if
1.regex : 是代表要匹配的正则表达式,可以通过正则表达式提取变量
2.replacement : 要替换的url地址
3.flag : 是我们进行完替换之后,要进行的操作
所以rewrite指令就是将regex指定的url替换成replacement这个新的url,然后再执行flag操作。
flag对应的操作有四种:
1.last : 用replacement这个URL重新进行location的匹配
2.break : 停止当前脚本指令的执行,等价于独立的break指令,这里停止的脚本指令指的是停止rewrite模块内的所有脚本指令
3.redirect : 返回302重定向
4.permanent : 返回301重定向
所以上文中我们使用了break指令
然后我们再来看一下regex部分,这里我们是用到了常用的正则表达式:
我们上面是将/api分割开,这里用$1引用前面正则表达式匹配到的分组(组编号从1开始),即/api/后面的所有内容