如下实验,请求 http://192.168.10.100/api/employee/login 根据 error.log 日志输出的错误信息,判断 proxy_pass 之后的地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 1. 上边不加,下边加【这种写法有问题,会多一个斜杠】 location /api { proxy_pass http://192.168.10.1:8080/; } 参考error.log,最终请求地址 http://192.168.10.1:8080//employee/login
2. 上边不加,下边不加【保持原样】 location /api { proxy_pass http://192.168.10.1:8080; } 参考error.log,最终请求地址 http://192.168.10.1:8080/api/employee/login
3. 上边加,下边不加【同2】 location /api/ { proxy_pass http://192.168.10.1:8080; } 参考error.log,最终请求地址 http://192.168.10.1:8080/api/employee/login
4. 上边加,下边加 location /api/ { proxy_pass http://192.168.10.1:8080/; } 参考error.log,最终请求地址 http://192.168.10.1:8080/employee/login
|
个人推荐,保留 2 和 4 这两种写法,只需要记住:如果不想要匹配的部分,则上下都加 /
,否则都不加!
另外一种,proxy_pass 后边的 url 包含路径,做如下实验,还是请求 http://192.168.10.100/api/employee/login
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 1. 上边不加,下边加【这种写法有问题,会多一个斜杠】 location /api { proxy_pass http://192.168.10.1:8080/user/; } 最终请求地址 http://192.168.10.1:8080/user//employee/login
2. 上边不加,下边不加【正常的去除前缀的写法】 location /api { proxy_pass http://192.168.10.1:8080/user; } 最终请求地址 http://192.168.10.1:8080/user/employee/login
3. 上边加,下边不加【这种写法有问题,会少一个斜杠】 location /api/ { proxy_pass http://192.168.10.1:8080/user; } http://192.168.10.1:8080/useremployee/login
4. 上边加,下边加【正常的去除前缀的写法】 location /api/ { proxy_pass http://192.168.10.1:8080/user/; } 最终请求地址 http://192.168.10.1:8080/user/employee/login
|
总结:这种写法一定会去除前缀,总结就是:要么都没有 /
,要么都要有 /
,否则最终拼接的 url 有错误!
参考文献:Nginx中proxy_pass末尾带斜杠/和不带的区别_proxy_pass /-CSDN博客