版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30038111/article/details/82387963
注:本博客要说的不是location
的配置规则和内容,而是基于url
的nginx
代理转发的后端接口的路径配置。
实路径和虚路径?
location
配置路径时,是分实路径和虚路径的,并且路径会影响到proxy_pass
转发时的路径。
假如tomcat
启动了一个名为online-registration
的工程
登录的后端接口如下所示
@RestController
@RequestMapping("/user/login")
public class UserLoginController {
@RequestMapping()
public Object login() {
return "success";
}
}
nginx
的location
配置如下所示
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 ;
}
结合接口的
RequestMapping
和nginx
配置来看:接口的路径是
/user/login
,location
配置的/v1/online
为虚拟路径,它的proxy_pass
配置到tomcat
启动的工程名即可,/v1/online/user
路径中包含RequestMapping
的关键字,它的proxy_pass
路径需要配置到工程名下的具体接口的路径。以浏览器访问路径分析:
http://1.1.1.1/v1/online/user/login
,nginx
匹配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
,这样会导致访问不到接口而抛出异常