location规则
配置静态资源或反向代理时,都需要用到location属性,这里以/app为例,介绍下location常见的转写URL规则。
前缀匹配 /app
前缀匹配最为常用,一个简单的例子如下:
location /app {
proxy_pass http://127.0.0.1:8080/;
}
该配置代表前缀匹配,例如/appa、/app/a都能够匹配转发。要注意,/appa会被转发到后端请求路径/a。
如果有多个前缀匹配,会匹配较长的那个配置。
精确匹配 = /app
location = /app {
proxy_pass http://127.0.0.1:8080/;
}
该配置表示精确匹配/app路径,/appa、/app/a这种路径均不会被转发,但是类似/app?id=1则可以。
正则匹配 ~ pattern
location ~ \.php$ {
proxy_pass http://127.0.0.1;
}
这里给出Nginx中默认对PHP的配置,~开头表示后面跟着一个区分大小写的正则表达式,\.php$表示匹配类似index.php、/pages/user.php这样的请求。如果不希望正则区分大小写,可以使用~*开头。
如果有多个匹配规则,正则匹配总是先于默认的前缀匹配执行。
注意:使用正则匹配时,proxy_pass中不能使用路径分隔符/,也就是说,对于前面的例子,假如你写了一个正则表达式/app.*,你就没法把对/app的请求转为对后台应用服务器的/请求了。
默认匹配 /
location / {
proxy_pass http://127.0.0.1:8080;
}
默认匹配其实就是一个最短的前缀匹配,如果有多个匹配规则,它会在其它匹配规则都不符合时执行。
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。