nginx location路径配置(实路径和虚路径)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30038111/article/details/82387963

注:本博客要说的不是location的配置规则和内容,而是基于urlnginx代理转发的后端接口的路径配置。

实路径和虚路径?

location配置路径时,是分实路径和虚路径的,并且路径会影响到proxy_pass转发时的路径。

假如tomcat启动了一个名为online-registration的工程

登录的后端接口如下所示

@RestController
@RequestMapping("/user/login")
public class UserLoginController {
    @RequestMapping()
    public Object login() {
        return "success";
    }
}

nginxlocation配置如下所示

location /v1/online {
    proxy_pass http://1.1.1.1:8080/online-registration/ ;
}
location /v1/online/user {
    proxy_pass http://1.1.1.1:8080/online-registration/user ;
}
  • 结合接口的RequestMappingnginx配置来看:

    接口的路径是 /user/loginlocation配置的/v1/online为虚拟路径,它的proxy_pass配置到tomcat启动的工程名即可,/v1/online/user路径中包含RequestMapping的关键字,它的proxy_pass路径需要配置到工程名下的具体接口的路径。

  • 以浏览器访问路径分析:

    http://1.1.1.1/v1/online/user/loginnginx匹配url中的/v1/online时,proxy_pass转发的路径为: http://1.1.1.1:8080/online-registration/user/login,正确的访问后端接口;nginx匹配到/v1/online/user时,如果proxy_pass配置的转发路径不加user时,那么转发的请求url为:http://1.1.1.1:8080/online-registration/login,这样会导致访问不到接口而抛出异常

猜你喜欢

转载自blog.csdn.net/qq_30038111/article/details/82387963