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进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap