匹配模式
= 全等匹配
~ 正则匹配
! 非 (!= !~)
* 忽略大小写 (~* !~*)
^~ 优先匹配
优先级:
全等匹配 > 优先匹配 > 正则匹配
root vs alias
访问url:/static/thisisa.js
location /static/{
root /var/projectA
alias /var/projectB
}
root:/var/projectA/static/thisisa.js (后面加全部访问路径 包含static)
alias:/var/projectB/thisisa.js (后面加匹配字符串后面的路径)
proxy_pass vs rewrite
proxy_pass结尾加斜杠(或路径):
访问url:/api/thisisaapi
location /api/{
proxy_pass a.com:1234
proxy_pass b.com:1234/
proxy_pass c.com:1234/dps/
}
不加: a.com:1234/api/thisisaapi(后面加全部访问路径)
加:b.com:1234/thisisaapi(后面加匹配字符串后面的路径 常用)
加路径: proxy_pass c.com:1234/dps/thisisaapi(后面加匹配字符串后面的路径)
正则匹配的情况下,proxy_pass结尾最好不要加路径
proxy_pass vs rewrite
proxy_pass是服务器内部转发,是我帮你访问目标地址,在这个页面反映出来
rewrite是给信号让浏览器重定向,是这个页面给你个信号,你自己访问目标地址
有点像java开发里面的forword跟redirect
rewrite regex replacement [flag]
例子: rewrite ^/(.*) http://baidu.com/$1 permanent;
^/(.*)代表所有路径,即所有情况下这条rewrite都生效
$1 代表regex里面括号里面匹配到的东西,即把匹配到的(这里相当于全部路径)路径重定向到http://baidu.com/后面
permanent重定向状态码是301 类似的有redirect是302
break跟last的区别:https://segmentfault.com/a/1190000020753046?utm_source=tag-newest