一般我们通过location /拦截请求,通过proxy_pass反向代理转发到指定URL
如下
现有服务A
@RestController
public class Nginx8081 {
@Value("${server.port}")
private Integer port;
@RequestMapping("/")
public String test(){
return "欢迎访问---"+port;
}
}
server {
listen 80;
server_name www.xuxu4.com;
location / {
proxy_pass http://127.0.0.1:8081/;
}
}
该配置代表拦截所有请求 然后反向代理转发至 127.0.0.1:8081这个url
访问如下
但是如果我们指定 location 拦截特定的路径时 location /test test后面带/和不带/有什么区别呢
controller中添加test01 test02请求
@RequestMapping("/test")
public String test01(){
return "test"+port;
}
@RequestMapping("/test01")
public String test02(){
return "test01"+port;
}
如果test后不带/
表示会拦截 如/test /test01 /testxxxxx 这一类请求,只要是以test开头的请求都会被拦截
如果test后带/
表示只会拦截/test 或者/test/xxxx等相关请求
那么 proxy_pass 后面的url带/ 和 不带/有什么区别呢
比如
如果URL后不带/
@RequestMapping("/test")
输入www.xuxu4.com/test 相当于被代理到 www.xuxu4.com/test/
如果URL后带/
@RequestMapping("/")
@RequestMapping("/test")
输入www.xuxu4.com/test 相当于被代理到 www.xuxu4.com/
请求时候得带上test才能被拦截