域名:test.com
转发路径:localhost:8099
请求路径:test.com/A/B/xxx
请求test.com/A/B/xxx提示404,直接请求localhost:8099没问题。
nginx的配置文件如下:
location ^~/A/B/ {
proxy_pass http://localhost:8099;
}
后来发现问题是少了个/
正确配置如下:
location ^~/A/B/ {
proxy_pass http://localhost:8099/;
}
直接请求端口是 curl http://localhost:8099/api #返回正常结果
原先请求域名是 curl http://test.com/A/B/api #返回404,因为少了个/ ,所以nginx的proxy_pass转发的时候就是转发成了 http://localhost:8099api ,少了个/,所以找不到8099端口里,多了个/,就会正常,http://localhost:8099/ ,再拼上api,就整出来。
因为是jar包,没有网站根目录,所以/也就不存在,只能手动加上绝对路径了,如果是tomcat,会有网站根目录ROOT,去网站根目录ROOT下寻找地址了。