1.搭建一个简单的sprigboot+thymeleaf项目
写个controller
@RequestMapping("/login")
public String toLogin() {return "login";
}
写一个login.html页面
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="utf-8" name="viewport"content="width=device-width, initial-scale=1, maximum-scale=1"></meta><title>bootdemo</title>
</head><body ><h1>HELLO LANREN312....</h1>
</body><script th:inline="javascript"></script></html>
2.把项目打包丢到虚拟机上
项目访问地址:
http://192.168.1.118:9235/login
http://192.168.1.118:9235/login3
3.nginx配置全地址
location /lanren312/ { proxy_pass http://192.168.1.118:9235/login/;
} location /lanren313/ { proxy_pass http://192.168.1.118:9235/login3/;
}
项目访问地址:
http://192.168.1.118/lanren312
http://192.168.1.118/lanren313
4.nginx配置ip:端口
location /lanren/ { proxy_pass http://192.168.1.118:9235/;
}
项目访问地址:
http://192.168.1.118/lanren/login 转发地址:http://192.168.1.118:9235/login
http://192.168.1.118/lanren/login3 转发地址:http://192.168.1.118:9235/login3
如果proxy_pass末尾有斜杠/,把path中location匹配成功的部分剪切掉之后再拼接到proxy_pass目标地址
location目录最后有斜杠/只能完全匹配目录,没有斜杠/不仅可以匹配目录还对目录进行模糊匹配。
5.nginx的proxy_pass去掉后面的斜杠/
location /lanren/ { proxy_pass http://192.168.1.118:9235;
}
请求地址:http://192.168.1.118/lanren/login 转发地址:http://192.168.1.118:9235/lanren/login。
如果proxy_pass末尾无斜杠/,把path拼接到proxy_pass目标地址
location目录最后有斜杠/只能完全匹配目录,没有斜杠/不仅可以匹配目录还对目录进行模糊匹配。
可以看到,没找到对应的页面。为了验证转发地址,在controller中单独再写一个(/lanren/login)请求。再去请求 http://192.168.1.118/lanren/login,验证成功。
请求 http://192.168.1.118/lanren/login3 ,页面还是报错,因为没有单独写(/lanren/login3)。
如果proxy_pass末尾有斜杠/,把path中location匹配成功的部分剪切掉之后再拼接到proxy_pass目标地址
如果proxy_pass末尾无斜杠/,把path拼接到proxy_pass目标地址
location目录最后有斜杠/只能完全匹配目录,没有斜杠/不仅可以匹配目录还对目录进行模糊匹配。
6、总结
参考博客:Nginx 配置文件中字符 “/“ 的巨大作用-CSDN博客
# http://192.168.1.118/lanren01/login 转发地址:http://192.168.1.118:9235/lanren01/login
location /lanren01/ { proxy_pass http://192.168.1.118:9235;
}
# http://192.168.1.118/lanren02/login 转发地址:http://192.168.1.118:9235/login
location /lanren02/ { proxy_pass http://192.168.1.118:9235/;
}
# http://192.168.1.118/lanren03/login 转发地址:http://192.168.1.118:9235/lanren03/login
# http://192.168.1.118/lanren0366/login 转发地址:http://192.168.1.118:9235/lanren0366/login
location /lanren03 { proxy_pass http://192.168.1.118:9235;
}
# http://192.168.1.118/lanren04/login 转发地址:http://192.168.1.118:9235//login --这里和02是一样的,只是多了一个斜杠/
# http://192.168.1.118/lanren0466/login 转发地址:http://192.168.1.118:9235/66/login
location /lanren04 { proxy_pass http://192.168.1.118:9235/;
}# http://192.168.1.118/lanren05/login 转发地址:http://192.168.1.118:9235/kkklogin, -- 这里的kkk和login 之间没有斜杠
location /lanren05/ { proxy_pass http://192.168.1.118:9235/kkk;
}
# http://192.168.1.118/lanren06/login 转发地址:http://192.168.1.118:9235/kkk/login,
location /lanren06/ { proxy_pass http://192.168.1.118:9235/kkk/;
}
# http://192.168.1.118/lanren07/login 转发地址:http://192.168.1.118:9235/kkk/login,
location /lanren07 { proxy_pass http://192.168.1.118:9235/kkk;
}
# http://192.168.1.118/lanren08/login 转发地址:http://192.168.1.118:9235/kkk//login, -- 这里的双斜杠
location /lanren08 { proxy_pass http://192.168.1.118:9235/kkk/;
}
附上一部分测试截图