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 --单独再写一个(/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/;
}
附上一部分测试截图