Nginx location配置

Nginx location配置

参考:

Nginx配置文件中location介绍

https://blog.csdn.net/m0_74412260/article/details/131030731

Nginx location配置

https://zhuanlan.zhihu.com/p/377954223

Nginx之location详解

https://cloud.tencent.com/developer/article/1562432

路径匹配

  1. = 开头表示精确匹配。如 A 中只匹配根目录结尾的请求,后面不能带任何字符串;
  2. ^~ 开头表示uri以某个常规字符串开头,不是正则匹配;
  3. ~ 开头表示区分大小写的正则匹配;
  4. ~* 开头表示不区分大小写的正则匹配;
  5. / 通用匹配, 如果没有其它匹配,任何请求都会匹配到。

注意:优先级

精确= > 前缀^~ > 正则~,~* > 一般 > 通用/

( location = ) > ( location 完整路径 ) > ( location ^~ 路径 ) > ( location ~,~* 正则顺序 ) > ( location 部分起始路径 ) > ( / )

 

代理转发 proxy_pass

该参数用作反向代理,可以用来做负载均衡、前端解决跨域等功能。

关于proxy_pass实现负载均衡,可以在nginx负载均衡中看到相关内容。

注意:proxy_pass转发请求,配置的url最后是否有 "/",会是不同的转发规则。

server {
    listen 2020;

    location /api/ {
        proxy_pass http://localhost:7001;
    }
}

请求代理:localhost:2020/api/component/list --> http://locahost:7001/api/component/list

应用场景:前端请求存在跨域,后端接口格式是api/业务路由,前端请求的接口也是api/业务路由。

server {
    listen 2020;

    location /api/ {
        proxy_pass http://localhost:7001/;
    }
}

请求代理:localhost:2020/api/component/list --> http://locahost:7001/component/list

应用场景:后端接口格式是业务路由,前端请求的接口是api/业务路由,前端请求的接口前面加一个"api"是为了标识某个后端服务,后端接口中并没用这个标识。

server {
    listen 2020;

    location /api/ {
        proxy_pass http://localhost:7001/online;
    }
}

请求代理:localhost:2020/api/component/list --> http://locahost:7001/onlinecomponent/list  应用场景:没遇到这样的场景,一般都会用都会用"/"隔开路径。

server {
    listen 2020;

    location /api/ {
        proxy_pass http://localhost:7001/online/;
    }
}

请求代理:localhost:2020/api/component/list --> http://locahost:7001/online/component/list

 

posted @ 2024-05-22 13:14  fieldtianye  阅读(405)  评论(0编辑  收藏  举报